/*
 * Copyright 2012 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */
#include "include/core/SkPath.h"
#include "include/core/SkPathTypes.h"
#include "include/pathops/SkPathOps.h"
#include "include/private/SkFloatBits.h"
#include "tests/PathOpsExtendedTest.h"
#include "tests/Test.h"

#include <array>
#include <cstddef>

#define TEST(name) { name, #name }

static void skpcheeseandburger_com225(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(555, 468);
    path.lineTo(555, 362);
    path.lineTo(872, 362);
    path.lineTo(872, 468);
    path.lineTo(555, 468);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(859.11792f, 397.320343f);
    pathB.cubicTo(855.523071f, 399.691284f, 853.721191f, 402.40863f, 853.721191f, 405.552216f);
    pathB.cubicTo(853.721191f, 407.911163f, 854.727478f, 410.115387f, 857.043518f, 412.252716f);
    pathB.cubicTo(859.920532f, 414.916138f, 862.704773f, 417.086426f, 864.679382f, 418.852386f);
    pathB.cubicTo(866.382446f, 420.371765f, 867.19104f, 422.108795f, 867.19104f, 423.506378f);
    pathB.cubicTo(867.19104f, 424.551605f, 866.741821f, 425.539886f, 865.935242f, 426.281616f);
    pathB.cubicTo(865.250366f, 426.910553f, 864.662415f, 427.339813f, 864.139282f, 427.4646f);
    pathB.cubicTo(863.536377f, 427.605347f, 862.259521f, 426.491272f, 860.366821f, 424.208191f);
    pathB.cubicTo(858.345276f, 421.770355f, 857.317017f, 419.733856f, 857.317017f, 417.98587f);
    pathB.cubicTo(857.317017f, 417.198212f, 857.942993f, 415.930389f, 857.942993f, 415.930389f);
    pathB.cubicTo(857.942993f, 415.930389f, 852.106018f, 421.296173f, 852.279663f, 422.549042f);
    pathB.cubicTo(852.462402f, 423.890747f, 853.669312f, 425.703613f, 855.876465f, 428.252258f);
    pathB.cubicTo(858.038818f, 430.754944f, 859.4953f, 431.840088f, 860.190125f, 431.594513f);
    pathB.cubicTo(862.571045f, 430.754944f, 865.48999f, 429.237549f, 868.44397f, 427.018372f);
    pathB.cubicTo(870.505371f, 425.470032f, 871.582581f, 423.534332f, 871.582581f, 421.001678f);
    pathB.cubicTo(871.582581f, 417.945923f, 870.056213f, 415.171692f, 867.015381f, 412.640045f);
    pathB.cubicTo(863.683105f, 409.872803f, 861.445923f, 408.027954f, 860.551514f, 407.140503f);
    pathB.cubicTo(858.660767f, 405.264709f, 857.765259f, 403.50174f, 857.765259f, 402.187988f);
    pathB.cubicTo(857.765259f, 401.141785f, 858.339355f, 400.394073f, 859.476318f, 399.925873f);
    pathB.cubicTo(860.004395f, 399.704254f, 861.270264f, 400.515869f, 863.156006f, 402.36969f);
    pathB.cubicTo(865.094727f, 404.28241f, 866.203796f, 405.565186f, 866.383484f, 406.130219f);
    pathB.cubicTo(868.250244f, 404.305359f, 869.179688f, 403.397919f, 871.046509f, 401.58902f);
    pathB.cubicTo(868.26825f, 399.296967f, 864.431824f, 394.705841f, 863.156006f, 394.600037f);
    pathB.cubicTo(863.145996f, 394.600037f, 863.136108f, 394.59903f, 863.126099f, 394.59903f);
    pathB.cubicTo(862.352417f, 394.598022f, 859.909607f, 396.79425f, 859.11792f, 397.320343f);
    pathB.moveTo(832.164246f, 394.307526f);
    pathB.cubicTo(832.451721f, 394.425323f, 832.598511f, 394.486206f, 832.886963f, 394.605011f);
    pathB.cubicTo(834.078979f, 395.474518f, 834.674927f, 395.90979f, 835.867859f, 396.781281f);
    pathB.cubicTo(836.502808f, 397.325348f, 836.863159f, 398.000183f, 836.863159f, 398.964539f);
    pathB.lineTo(836.863159f, 419.740845f);
    pathB.cubicTo(836.863159f, 420.876923f, 836.319092f, 422.17868f, 835.055298f, 423.617188f);
    pathB.cubicTo(836.39502f, 424.512665f, 837.063843f, 424.961884f, 838.39856f, 425.864349f);
    pathB.cubicTo(839.477661f, 426.578125f, 841.37439f, 427.27594f, 842.275879f, 427.443634f);
    pathB.cubicTo(842.999634f, 427.574402f, 843.82019f, 427.513519f, 844.354309f, 427.216034f);
    pathB.cubicTo(846.956787f, 425.765503f, 848.689819f, 423.588257f, 848.58606f, 423.483429f);
    pathB.cubicTo(848.58606f, 423.483429f, 846.877991f, 423.327698f, 845.971558f, 422.807587f);
    pathB.cubicTo(845.253784f, 422.284485f, 844.892395f, 422.022949f, 844.171631f, 421.502838f);
    pathB.cubicTo(843.361023f, 420.915833f, 842.907837f, 420.308899f, 842.907837f, 419.350525f);
    pathB.lineTo(842.907837f, 399.445709f);
    pathB.cubicTo(842.907837f, 398.053101f, 843.272217f, 397.417175f, 843.812256f, 397.518005f);
    pathB.cubicTo(844.170654f, 397.583893f, 844.711731f, 398.122986f, 845.432495f, 398.782837f);
    pathB.cubicTo(846.116333f, 399.402771f, 846.459717f, 399.709259f, 847.14856f, 400.3302f);
    pathB.cubicTo(844.986206f, 402.099152f, 843.988892f, 403.926025f, 843.988892f, 405.932556f);
    pathB.cubicTo(843.988892f, 410.209229f, 848.272583f, 410.951935f, 849.576355f, 408.394348f);
    pathB.cubicTo(849.871826f, 407.816345f, 850.421875f, 406.214081f, 850.387939f, 406.196106f);
    pathB.cubicTo(850.387939f, 406.196106f, 849.305786f, 406.771118f, 848.495239f, 406.615387f);
    pathB.cubicTo(846.96582f, 406.316895f, 846.153198f, 405.46637f, 846.153198f, 403.89505f);
    pathB.cubicTo(846.153198f, 401.796661f, 848.50116f, 399.09729f, 852.279663f, 396.270142f);
    pathB.cubicTo(851.014893f, 395.315796f, 847.723511f, 391.546265f, 846.875f, 391.546265f);
    pathB.cubicTo(846.330933f, 391.546265f, 843.988892f, 394.403351f, 843.273193f, 394.972382f);
    pathB.cubicTo(840.889282f, 392.886963f, 839.700317f, 391.850739f, 837.312378f, 389.786285f);
    pathB.cubicTo(835.257935f, 391.589203f, 834.225708f, 392.491638f, 832.164246f, 394.307526f);
    pathB.moveTo(818.860107f, 392.707275f);
    pathB.cubicTo(819.857361f, 393.382111f, 822.302124f, 395.764038f, 824.387573f, 397.051819f);
    pathB.cubicTo(822.57666f, 398.249756f, 820.582092f, 399.687286f, 818.860107f, 400.827332f);
    pathB.lineTo(818.860107f, 392.707275f);
    pathB.close();
    pathB.moveTo(810.69812f, 391.096039f);
    pathB.cubicTo(810.69812f, 391.096039f, 812.786499f, 394.093903f, 812.786499f, 394.965393f);
    pathB.lineTo(812.786499f, 415.743713f);
    pathB.cubicTo(812.786499f, 417.753265f, 811.881042f, 418.497986f, 810.974609f, 419.769806f);
    pathB.cubicTo(813.948486f, 421.160431f, 815.437988f, 421.864197f, 818.404846f, 423.283783f);
    pathB.cubicTo(819.948181f, 423.95462f, 822.417969f, 424.592529f, 823.937317f, 423.782928f);
    pathB.cubicTo(827.905518f, 421.663544f, 831.53125f, 417.600525f, 832.255005f, 415.191681f);
    pathB.cubicTo(833.882263f, 409.877808f, 823.095825f, 411.495026f, 823.119751f, 411.518982f);
    pathB.cubicTo(823.119751f, 411.518982f, 832.000488f, 411.874359f, 830.537964f, 416.29776f);
    pathB.cubicTo(829.888123f, 418.253418f, 827.278564f, 420.292908f, 825.385864f, 419.55719f);
    pathB.cubicTo(821.14209f, 417.915985f, 818.861023f, 417.414856f, 818.861023f, 414.970032f);
    pathB.lineTo(818.861023f, 403.096436f);
    pathB.cubicTo(822.126404f, 399.132233f, 831.289673f, 395.897797f, 831.356567f, 395.657227f);
    pathB.cubicTo(831.356567f, 395.657227f, 823.022888f, 387.594055f, 821.763062f, 387.476257f);
    pathB.cubicTo(821.755066f, 387.47525f, 821.746094f, 387.47525f, 821.737061f, 387.47525f);
    pathB.cubicTo(820.793701f, 387.47525f, 810.72406f, 390.967255f, 810.69812f, 391.096039f);
    pathB.moveTo(624.254211f, 390.498077f);
    pathB.cubicTo(625.252502f, 390.893402f, 627.708252f, 392.592468f, 629.796692f, 393.307251f);
    pathB.cubicTo(627.978821f, 395.006317f, 625.980225f, 397.000916f, 624.254211f, 398.618134f);
    pathB.lineTo(624.254211f, 390.498077f);
    pathB.close();
    pathB.moveTo(627.160217f, 384.460449f);
    pathB.cubicTo(626.286743f, 384.51535f, 616.076233f, 390.993225f, 616.086243f, 391.141968f);
    pathB.cubicTo(616.086243f, 391.141968f, 618.173645f, 393.561798f, 618.173645f, 394.437317f);
    pathB.lineTo(618.173645f, 415.216614f);
    pathB.cubicTo(618.173645f, 417.222168f, 617.265198f, 418.219482f, 616.355774f, 419.742859f);
    pathB.cubicTo(619.331665f, 420.307892f, 620.824097f, 420.599396f, 623.802979f, 421.198364f);
    pathB.cubicTo(625.346313f, 421.437958f, 627.818115f, 421.39801f, 629.342468f, 420.166138f);
    pathB.cubicTo(633.340576f, 416.939667f, 636.982361f, 411.871368f, 637.714111f, 409.263855f);
    pathB.cubicTo(639.348267f, 403.500732f, 628.508911f, 408.111816f, 628.52887f, 408.126801f);
    pathB.cubicTo(628.52887f, 408.126801f, 637.468506f, 405.998444f, 635.985046f, 410.844147f);
    pathB.cubicTo(635.332153f, 412.984467f, 632.705688f, 415.748718f, 630.801941f, 415.541077f);
    pathB.cubicTo(626.537292f, 415.072876f, 624.257202f, 415.202667f, 624.257202f, 412.755859f);
    pathB.cubicTo(624.257202f, 408.007019f, 624.255188f, 405.636078f, 624.255188f, 400.884247f);
    pathB.cubicTo(627.525574f, 396.016602f, 636.801636f, 390.283447f, 636.801636f, 389.97995f);
    pathB.cubicTo(636.801636f, 389.97995f, 628.360168f, 384.458435f, 627.18219f, 384.458435f);
    pathB.cubicTo(627.174194f, 384.460449f, 627.167236f, 384.460449f, 627.160217f, 384.460449f);
    pathB.moveTo(796.530396f, 416.438538f);
    pathB.cubicTo(795.892517f, 416.365662f, 794.527832f, 415.589996f, 792.348572f, 414.036652f);
    pathB.lineTo(792.348572f, 391.425476f);
    pathB.cubicTo(792.348572f, 390.465118f, 792.530273f, 390.047852f, 792.89563f, 390.088776f);
    pathB.cubicTo(793.075317f, 390.109741f, 793.3479f, 390.317383f, 793.804077f, 390.629852f);
    pathB.cubicTo(795.113831f, 391.585205f, 795.768738f, 392.059387f, 797.077515f, 393.018738f);
    pathB.cubicTo(797.983948f, 393.648651f, 798.348267f, 394.219666f, 798.348267f, 394.742767f);
    pathB.lineTo(798.348267f, 413.253998f);
    pathB.cubicTo(798.348267f, 415.391327f, 797.783264f, 416.451508f, 796.728088f, 416.451508f);
    pathB.cubicTo(796.664185f, 416.4505f, 796.598267f, 416.446533f, 796.530396f, 416.438538f);
    pathB.moveTo(795.165771f, 383.714722f);
    pathB.cubicTo(794.022705f, 383.851471f, 783.959961f, 388.652252f, 783.880127f, 388.873871f);
    pathB.cubicTo(783.880127f, 388.873871f, 785.054077f, 389.871155f, 785.522339f, 390.606873f);
    pathB.cubicTo(786.000488f, 391.361603f, 786.246094f, 391.9935f, 786.246094f, 392.427765f);
    pathB.lineTo(786.246094f, 411.987183f);
    pathB.cubicTo(786.246094f, 413.733185f, 784.160645f, 416.428558f, 784.246521f, 416.759979f);
    pathB.cubicTo(784.258484f, 416.79892f, 785.432495f, 417.14032f, 785.793823f, 417.350952f);
    pathB.cubicTo(786.739258f, 417.937958f, 787.213379f, 418.228455f, 788.161804f, 418.821442f);
    pathB.cubicTo(789.342773f, 419.554199f, 790.619568f, 419.956482f, 791.892395f, 420.098236f);
    pathB.cubicTo(794.533813f, 420.390747f, 796.717102f, 419.337555f, 798.349304f, 416.999573f);
    pathB.lineTo(798.349304f, 425.212463f);
    pathB.cubicTo(797.94696f, 425.47702f, 797.750305f, 425.609772f, 797.356018f, 425.874329f);
    pathB.cubicTo(795.259583f, 423.619202f, 792.806824f, 422.286499f, 789.985657f, 421.984009f);
    pathB.cubicTo(785.157959f, 421.463898f, 780.409119f, 428.344086f, 780.423096f, 428.346069f);
    pathB.cubicTo(780.423096f, 428.346069f, 783.340088f, 424.960907f, 785.889709f, 425.218445f);
    pathB.cubicTo(789.25592f, 425.565857f, 793.166199f, 430.745972f, 793.805115f, 430.790894f);
    pathB.cubicTo(793.940857f, 430.798889f, 795.918457f, 429.091797f, 798.454102f, 427.383728f);
    pathB.cubicTo(801.049683f, 425.635742f, 804.230225f, 423.886749f, 806.619141f, 423.980591f);
    pathB.cubicTo(805.621826f, 423.586243f, 805.048828f, 423.074127f, 804.804199f, 422.609924f);
    pathB.cubicTo(804.616577f, 422.25354f, 804.616577f, 421.539764f, 804.616577f, 420.31488f);
    pathB.cubicTo(804.623535f, 411.732605f, 804.623535f, 403.147339f, 804.623535f, 394.562073f);
    pathB.cubicTo(804.623535f, 392.464691f, 805.970215f, 391.000183f, 805.984192f, 390.896362f);
    pathB.cubicTo(805.984192f, 390.896362f, 796.785034f, 383.7117f, 795.219666f, 383.7117f);
    pathB.cubicTo(795.19873f, 383.712708f, 795.181763f, 383.712708f, 795.165771f, 383.714722f);
    pathB.moveTo(648.092285f, 387.883545f);
    pathB.cubicTo(649.095581f, 388.312805f, 651.55835f, 390.099762f, 653.655701f, 390.884399f);
    pathB.cubicTo(651.831848f, 392.522583f, 649.82428f, 394.447296f, 648.092285f, 396.003601f);
    pathB.lineTo(648.092285f, 387.883545f);
    pathB.close();
    pathB.moveTo(651.009277f, 381.943756f);
    pathB.cubicTo(650.147766f, 381.983704f, 639.893372f, 388.105164f, 639.899353f, 388.254913f);
    pathB.cubicTo(639.899353f, 388.254913f, 641.987793f, 390.744659f, 641.987793f, 391.617157f);
    pathB.lineTo(641.987793f, 412.399475f);
    pathB.cubicTo(641.987793f, 414.409027f, 641.082336f, 415.369354f, 640.169861f, 416.864807f);
    pathB.cubicTo(643.155762f, 417.53064f, 644.650208f, 417.87207f, 647.638062f, 418.573853f);
    pathB.cubicTo(649.188416f, 418.865356f, 651.666138f, 418.908295f, 653.19751f, 417.725311f);
    pathB.cubicTo(657.204651f, 414.633636f, 660.859375f, 409.690125f, 661.590088f, 407.106567f);
    pathB.cubicTo(663.231262f, 401.397339f, 652.356934f, 405.644073f, 652.375916f, 405.663025f);
    pathB.cubicTo(652.375916f, 405.663025f, 661.338562f, 403.835175f, 659.857056f, 408.632935f);
    pathB.cubicTo(659.199219f, 410.748291f, 656.568726f, 413.424713f, 654.656982f, 413.151184f);
    pathB.cubicTo(650.381348f, 412.536224f, 648.092285f, 412.591125f, 648.092285f, 410.146332f);
    pathB.lineTo(648.092285f, 398.270721f);
    pathB.cubicTo(651.374634f, 393.5159f, 660.66571f, 388.09021f, 660.674683f, 387.791718f);
    pathB.cubicTo(660.674683f, 387.791718f, 652.188232f, 381.941772f, 651.022278f, 381.942749f);
    pathB.cubicTo(651.01825f, 381.942749f, 651.013245f, 381.942749f, 651.009277f, 381.943756f);
    pathB.moveTo(761.636353f, 385.965851f);
    pathB.cubicTo(761.927856f, 386.056702f, 762.071594f, 386.098633f, 762.363098f, 386.189453f);
    pathB.cubicTo(763.570007f, 386.938171f, 764.175964f, 387.311554f, 765.376892f, 388.066254f);
    pathB.cubicTo(766.019775f, 388.546417f, 766.384155f, 389.184326f, 766.384155f, 390.147675f);
    pathB.lineTo(766.384155f, 410.924011f);
    pathB.cubicTo(766.384155f, 412.057037f, 765.836121f, 413.410736f, 764.559326f, 414.979034f);
    pathB.cubicTo(765.911987f, 415.738739f, 766.579834f, 416.12207f, 767.934509f, 416.887756f);
    pathB.cubicTo(769.029602f, 417.495728f, 770.944336f, 418.000854f, 771.85675f, 418.075714f);
    pathB.cubicTo(772.58551f, 418.134613f, 773.413086f, 417.987854f, 773.950195f, 417.638458f);
    pathB.cubicTo(776.583618f, 415.917419f, 778.332642f, 413.564453f, 778.237793f, 413.473633f);
    pathB.cubicTo(778.237793f, 413.473633f, 776.507812f, 413.497559f, 775.596313f, 413.066315f);
    pathB.cubicTo(774.866577f, 412.61908f, 774.497253f, 412.39447f, 773.771484f, 411.951233f);
    pathB.cubicTo(772.947876f, 411.444092f, 772.493652f, 410.877075f, 772.493652f, 409.919708f);
    pathB.lineTo(772.493652f, 390.013885f);
    pathB.cubicTo(772.493652f, 388.618286f, 772.860046f, 387.949432f, 773.407104f, 387.995361f);
    pathB.cubicTo(773.771484f, 388.026306f, 774.318542f, 388.509491f, 775.049316f, 389.09848f);
    pathB.cubicTo(775.742065f, 389.646515f, 776.088501f, 389.923065f, 776.77533f, 390.470123f);
    pathB.cubicTo(774.590088f, 392.45871f, 773.589783f, 394.385376f, 773.589783f, 396.395935f);
    pathB.cubicTo(773.589783f, 400.673584f, 777.907349f, 401.008026f, 779.237122f, 398.292694f);
    pathB.cubicTo(779.539551f, 397.684723f, 780.089661f, 396.027557f, 780.058716f, 396.01358f);
    pathB.cubicTo(780.058716f, 396.01358f, 778.970581f, 396.694427f, 778.149963f, 396.618561f);
    pathB.cubicTo(776.598633f, 396.4758f, 775.775024f, 395.709106f, 775.775024f, 394.13681f);
    pathB.cubicTo(775.775024f, 392.042419f, 778.149963f, 389.103455f, 781.973389f, 385.892975f);
    pathB.cubicTo(780.697571f, 385.06839f, 777.326416f, 381.676208f, 776.506775f, 381.719147f);
    pathB.cubicTo(775.908813f, 381.747101f, 773.588806f, 384.868744f, 772.860046f, 385.506622f);
    pathB.cubicTo(770.451172f, 383.664795f, 769.248291f, 382.749359f, 766.843384f, 380.929504f);
    pathB.cubicTo(764.758972f, 382.934052f, 763.716736f, 383.940338f, 761.636353f, 385.965851f);
    pathB.moveTo(672.996521f, 379.821411f);
    pathB.cubicTo(672.123047f, 379.891266f, 669.7052f, 382.898132f, 668.887573f, 383.64682f);
    pathB.cubicTo(665.239868f, 386.999084f, 663.41095f, 390.213562f, 663.41095f, 393.356171f);
    pathB.cubicTo(663.41095f, 395.715118f, 664.439209f, 397.642792f, 666.785156f, 399.150208f);
    pathB.cubicTo(669.702148f, 401.02002f, 672.547302f, 402.439575f, 674.545837f, 403.655487f);
    pathB.cubicTo(676.261902f, 404.697693f, 677.105469f, 406.231049f, 677.105469f, 407.625671f);
    pathB.cubicTo(677.105469f, 408.671875f, 676.651245f, 409.777954f, 675.825684f, 410.7453f);
    pathB.cubicTo(675.12384f, 411.569885f, 674.538879f, 412.145905f, 673.997803f, 412.417419f);
    pathB.cubicTo(673.38385f, 412.724915f, 672.080078f, 411.958221f, 670.166382f, 410.198242f);
    pathB.cubicTo(668.113892f, 408.319458f, 667.062683f, 406.55249f, 667.062683f, 404.808502f);
    pathB.cubicTo(667.062683f, 404.020844f, 667.701599f, 402.580322f, 667.701599f, 402.580322f);
    pathB.cubicTo(667.701599f, 402.580322f, 661.773804f, 409.542358f, 661.951477f, 410.7453f);
    pathB.cubicTo(662.13916f, 412.037079f, 663.368042f, 413.524536f, 665.60321f, 415.469208f);
    pathB.cubicTo(667.791443f, 417.368927f, 669.261963f, 418.074738f, 669.983704f, 417.630493f);
    pathB.cubicTo(672.412537f, 416.138062f, 675.369446f, 413.822021f, 678.385254f, 410.790222f);
    pathB.cubicTo(680.485657f, 408.677856f, 681.587769f, 406.446686f, 681.587769f, 403.917023f);
    pathB.cubicTo(681.587769f, 400.859283f, 680.007446f, 398.490356f, 676.923767f, 396.806244f);
    pathB.cubicTo(673.540588f, 394.957428f, 671.257507f, 393.71756f, 670.351074f, 393.075653f);
    pathB.cubicTo(668.434326f, 391.71698f, 667.518921f, 390.193604f, 667.518921f, 388.88385f);
    pathB.cubicTo(667.518921f, 387.837646f, 668.101929f, 386.934204f, 669.25592f, 386.156525f);
    pathB.cubicTo(669.796997f, 385.788147f, 671.085815f, 386.257355f, 672.997498f, 387.592072f);
    pathB.cubicTo(674.966125f, 388.968689f, 676.104187f, 389.951019f, 676.284851f, 390.465118f);
    pathB.cubicTo(678.186584f, 388.130127f, 679.136963f, 386.966125f, 681.035706f, 384.646118f);
    pathB.cubicTo(678.244507f, 383.133728f, 674.247375f, 379.819397f, 673.044434f, 379.819397f);
    pathB.cubicTo(673.027466f, 379.819397f, 673.011475f, 379.820404f, 672.996521f, 379.821411f);
    pathB.moveTo(732.95459f, 384.60318f);
    pathB.cubicTo(733.246094f, 384.680054f, 733.391846f, 384.720001f, 733.689331f, 384.794861f);
    pathB.cubicTo(735.072937f, 385.500641f, 735.769714f, 385.856049f, 737.162354f, 386.563812f);
    pathB.cubicTo(737.891113f, 386.938171f, 738.164612f, 387.642975f, 738.164612f, 388.6073f);
    pathB.lineTo(738.164612f, 408.510132f);
    pathB.cubicTo(738.164612f, 410.257141f, 737.709412f, 411.893341f, 736.064209f, 413.416718f);
    pathB.cubicTo(737.635498f, 414.235321f, 738.419189f, 414.651611f, 739.991455f, 415.475189f);
    pathB.cubicTo(740.997742f, 416.034241f, 742.186707f, 416.344696f, 743.098145f, 416.379639f);
    pathB.cubicTo(743.830872f, 416.410583f, 744.476807f, 416.175964f, 745.019836f, 415.851532f);
    pathB.cubicTo(746.476318f, 414.977051f, 748.58075f, 413.571442f, 749.225647f, 413.079285f);
    pathB.cubicTo(751.012573f, 414.253296f, 751.907043f, 414.845276f, 753.69696f, 416.028229f);
    pathB.cubicTo(754.703247f, 416.610229f, 755.706543f, 416.84082f, 756.528076f, 416.892761f);
    pathB.cubicTo(757.259827f, 416.93866f, 757.996582f, 416.807892f, 758.537659f, 416.494446f);
    pathB.cubicTo(760.814758f, 415.174713f, 762.185425f, 413.509552f, 762.552734f, 412.830719f);
    pathB.cubicTo(761.637329f, 412.681976f, 759.633789f, 411.58786f, 759.263428f, 411.387207f);
    pathB.cubicTo(758.607544f, 410.994873f, 758.279114f, 410.803223f, 757.621216f, 410.413879f);
    pathB.cubicTo(756.983276f, 410.020538f, 756.616943f, 409.301788f, 756.616943f, 408.343445f);
    pathB.lineTo(756.616943f, 388.351746f);
    pathB.cubicTo(756.616943f, 387.387421f, 757.164978f, 386.548859f, 758.627502f, 385.067383f);
    pathB.cubicTo(755.523804f, 383.05484f, 753.97052f, 382.057556f, 750.862854f, 380.078949f);
    pathB.cubicTo(749.001038f, 382.112457f, 748.069641f, 383.130707f, 746.207825f, 385.174194f);
    pathB.cubicTo(746.501343f, 385.292999f, 746.647095f, 385.353912f, 746.939575f, 385.472687f);
    pathB.cubicTo(747.996765f, 386.183472f, 748.525879f, 386.538879f, 749.587036f, 387.257629f);
    pathB.cubicTo(750.224915f, 387.724823f, 750.498474f, 388.351746f, 750.498474f, 389.223267f);
    pathB.lineTo(750.498474f, 407.822327f);
    pathB.cubicTo(750.498474f, 408.694824f, 750.339722f, 409.955658f, 749.951416f, 410.847137f);
    pathB.cubicTo(749.550049f, 411.761566f, 749.039978f, 411.585876f, 748.487915f, 411.560913f);
    pathB.cubicTo(747.393799f, 411.503998f, 746.385498f, 410.53067f, 745.473083f, 410.022552f);
    pathB.cubicTo(744.760254f, 409.627228f, 744.380981f, 409.013275f, 744.380981f, 407.965088f);
    pathB.lineTo(744.380981f, 386.840363f);
    pathB.cubicTo(744.380981f, 385.791138f, 744.833191f, 384.763916f, 745.657776f, 383.839508f);
    pathB.cubicTo(742.656921f, 382.101501f, 741.161499f, 381.234985f, 738.162659f, 379.525909f);
    pathB.cubicTo(736.083191f, 381.548431f, 735.039978f, 382.562683f, 732.95459f, 384.60318f);
    pathB.moveTo(692.546936f, 385.171204f);
    pathB.cubicTo(693.552246f, 385.667358f, 696.018005f, 387.607025f, 698.122375f, 388.521454f);
    pathB.cubicTo(696.293518f, 390.043854f, 694.281982f, 391.844757f, 692.546936f, 393.294281f);
    pathB.lineTo(692.546936f, 385.171204f);
    pathB.close();
    pathB.moveTo(695.4729f, 379.417084f);
    pathB.cubicTo(694.635376f, 379.426086f, 684.32605f, 384.880707f, 684.322083f, 385.025452f);
    pathB.cubicTo(684.322083f, 385.025452f, 686.422485f, 387.645966f, 686.422485f, 388.521454f);
    pathB.lineTo(686.422485f, 409.300781f);
    pathB.cubicTo(686.422485f, 411.312347f, 685.51001f, 412.21579f, 684.595581f, 413.65033f);
    pathB.cubicTo(687.592468f, 414.504852f, 689.089905f, 414.945099f, 692.088745f, 415.833557f);
    pathB.cubicTo(693.645081f, 416.221893f, 696.128784f, 416.420563f, 697.667114f, 415.334412f);
    pathB.cubicTo(701.67926f, 412.494293f, 705.344971f, 407.783386f, 706.077698f, 405.240753f);
    pathB.cubicTo(707.721924f, 399.638367f, 696.822632f, 403.198273f, 696.845581f, 403.216248f);
    pathB.cubicTo(696.845581f, 403.216248f, 705.825134f, 401.960388f, 704.337708f, 406.658325f);
    pathB.cubicTo(703.683838f, 408.733765f, 701.044373f, 411.241455f, 699.129639f, 410.847137f);
    pathB.cubicTo(694.843018f, 409.968628f, 692.545959f, 409.876801f, 692.545959f, 407.432983f);
    pathB.lineTo(692.545959f, 395.563354f);
    pathB.cubicTo(695.838318f, 391.012177f, 705.134338f, 386.160522f, 705.162292f, 385.873993f);
    pathB.cubicTo(705.162292f, 385.873993f, 696.635925f, 379.416107f, 695.473938f, 379.417084f);
    pathB.cubicTo(695.474915f, 379.417084f, 695.473938f, 379.417084f, 695.4729f, 379.417084f);
    pathB.moveTo(570.463562f, 420.81601f);
    pathB.lineTo(570.463562f, 402.922729f);
    pathB.cubicTo(571.039551f, 402.800934f, 571.327087f, 402.743042f, 571.901123f, 402.625244f);
    pathB.lineTo(571.901123f, 423.142029f);
    pathB.cubicTo(570.911804f, 422.823578f, 570.463562f, 422.123779f, 570.463562f, 420.81601f);
    pathB.moveTo(570.463562f, 384.062134f);
    pathB.cubicTo(571.039551f, 384.149963f, 571.327087f, 384.198883f, 571.901123f, 384.290741f);
    pathB.lineTo(571.901123f, 401.580048f);
    pathB.cubicTo(571.327087f, 401.695862f, 571.039551f, 401.756744f, 570.463562f, 401.874542f);
    pathB.lineTo(570.463562f, 384.062134f);
    pathB.close();
    pathB.moveTo(573.880676f, 376.556f);
    pathB.cubicTo(572.483093f, 376.996246f, 561.476013f, 385.624451f, 561.482971f, 385.70929f);
    pathB.cubicTo(561.482971f, 385.70929f, 563.637268f, 388.554413f, 563.637268f, 389.688446f);
    pathB.lineTo(563.637268f, 398.423462f);
    pathB.cubicTo(556.411682f, 399.838043f, 555.429382f, 404.307373f, 555.418396f, 405.679993f);
    pathB.lineTo(555.418396f, 405.724915f);
    pathB.cubicTo(555.42041f, 405.94455f, 555.448364f, 406.073334f, 555.477295f, 406.083313f);
    pathB.cubicTo(555.477295f, 406.083313f, 558.070862f, 404.250458f, 563.637268f, 403.222229f);
    pathB.lineTo(563.637268f, 404.797516f);
    pathB.cubicTo(556.993713f, 406.233063f, 555.191772f, 412.494293f, 555.569153f, 412.614105f);
    pathB.cubicTo(555.569153f, 412.614105f, 561.572815f, 410.21521f, 563.637268f, 409.598267f);
    pathB.lineTo(563.637268f, 424.00354f);
    pathB.cubicTo(563.637268f, 426.357483f, 563.36676f, 427.901855f, 562.291565f, 429.70874f);
    pathB.cubicTo(565.448181f, 430.067139f, 567.028442f, 430.256805f, 570.192017f, 430.653137f);
    pathB.cubicTo(571.99292f, 430.893707f, 574.782166f, 430.669098f, 576.403381f, 429.136719f);
    pathB.cubicTo(580.960571f, 424.828125f, 586.135681f, 419.346527f, 586.135681f, 416.115082f);
    pathB.lineTo(586.135681f, 406.511566f);
    pathB.cubicTo(586.135681f, 405.377533f, 586.047791f, 404.608856f, 586.678711f, 403.271149f);
    pathB.cubicTo(584.151062f, 404.98819f, 582.888245f, 405.851715f, 580.362549f, 407.587738f);
    pathB.cubicTo(579.281433f, 408.320465f, 579.192566f, 409.2948f, 579.192566f, 410.955933f);
    pathB.lineTo(579.192566f, 421.869202f);
    pathB.cubicTo(579.192566f, 423.180969f, 577.746033f, 423.273804f, 577.392639f, 423.266815f);
    pathB.cubicTo(575.636658f, 423.228882f, 574.153259f, 423.295776f, 573.071106f, 423.077148f);
    pathB.lineTo(573.071106f, 384.663086f);
    pathB.cubicTo(575.230408f, 385.379852f, 576.309509f, 385.742249f, 578.473816f, 386.473999f);
    pathB.cubicTo(579.373291f, 386.996094f, 579.553955f, 387.490234f, 579.553955f, 388.013336f);
    pathB.cubicTo(581.861023f, 384.848785f, 583.015991f, 383.267487f, 585.325073f, 380.114899f);
    pathB.cubicTo(581.680298f, 379.229431f, 575.865295f, 376.520081f, 574.157227f, 376.521057f);
    pathB.cubicTo(574.047424f, 376.522064f, 573.955566f, 376.533051f, 573.880676f, 376.556f);
    pathB.moveTo(593.447083f, 375.096527f);
    pathB.cubicTo(592.363953f, 375.804291f, 591.821899f, 376.772644f, 591.821899f, 377.908691f);
    pathB.lineTo(591.821899f, 419.46933f);
    pathB.cubicTo(591.821899f, 420.517517f, 591.187012f, 422.018951f, 589.921143f, 423.991577f);
    pathB.cubicTo(591.2948f, 424.412842f, 591.982605f, 424.622467f, 593.354248f, 425.050751f);
    pathB.cubicTo(594.53125f, 425.462036f, 595.525513f, 425.555878f, 596.427979f, 425.404144f);
    pathB.cubicTo(597.150757f, 425.279358f, 597.785645f, 424.914978f, 598.326721f, 424.475739f);
    pathB.cubicTo(600.935242f, 422.385315f, 602.846985f, 419.809753f, 602.759094f, 419.749847f);
    pathB.cubicTo(602.759094f, 419.749847f, 601.582153f, 419.935516f, 600.59082f, 419.831696f);
    pathB.cubicTo(600.0448f, 419.74585f, 599.774231f, 419.700928f, 599.233154f, 419.615082f);
    pathB.cubicTo(598.416565f, 419.484314f, 597.965332f, 418.860382f, 597.965332f, 417.988861f);
    pathB.lineTo(597.965332f, 396.857147f);
    pathB.cubicTo(597.965332f, 395.376678f, 598.326721f, 394.617004f, 598.867798f, 394.528137f);
    pathB.cubicTo(599.232178f, 394.466248f, 599.773254f, 394.731812f, 600.59082f, 395.124115f);
    pathB.cubicTo(601.601074f, 395.589325f, 602.111206f, 395.819946f, 603.123474f, 396.288116f);
    pathB.cubicTo(603.93811f, 396.686432f, 603.93512f, 397.38324f, 603.93512f, 398.169891f);
    pathB.cubicTo(603.93512f, 405.971497f, 603.93512f, 413.768127f, 603.93811f, 421.569702f);
    pathB.cubicTo(603.93811f, 425.325256f, 601.109924f, 430.634155f, 601.133911f, 430.656128f);
    pathB.cubicTo(601.133911f, 430.656128f, 605.184937f, 427.222015f, 607.017822f, 424.414825f);
    pathB.cubicTo(609.118164f, 421.201355f, 610.280212f, 417.987854f, 610.280212f, 415.109802f);
    pathB.lineTo(610.280212f, 394.593048f);
    pathB.cubicTo(610.280212f, 393.890228f, 610.823242f, 393.112579f, 611.728699f, 392.020447f);
    pathB.cubicTo(608.827698f, 390.960266f, 604.000977f, 387.703857f, 602.759094f, 387.967407f);
    pathB.cubicTo(602.120239f, 388.104187f, 599.957947f, 391.29071f, 597.965332f, 393.27829f);
    pathB.lineTo(597.965332f, 374.422668f);
    pathB.cubicTo(597.965332f, 373.461334f, 598.326721f, 372.440063f, 598.867798f, 371.567566f);
    pathB.cubicTo(596.701538f, 372.96817f, 595.616394f, 373.677948f, 593.447083f, 375.096527f);
    pathB.moveTo(718.054138f, 409.318756f);
    pathB.cubicTo(717.461182f, 408.789673f, 716.867188f, 408.178711f, 716.867188f, 407.218353f);
    pathB.lineTo(716.867188f, 387.053986f);
    pathB.cubicTo(716.867188f, 385.305969f, 717.323425f, 385.566528f, 718.328674f, 386.013763f);
    pathB.cubicTo(719.645386f, 386.859314f, 720.307251f, 387.284576f, 721.622009f, 388.135132f);
    pathB.cubicTo(722.266907f, 388.4935f, 722.903809f, 388.934753f, 722.903809f, 389.721405f);
    pathB.lineTo(722.903809f, 407.794373f);
    pathB.cubicTo(722.903809f, 408.66687f, 722.746094f, 410.490753f, 722.259888f, 410.758301f);
    pathB.cubicTo(722.125122f, 410.83017f, 721.950439f, 410.862122f, 721.746826f, 410.862122f);
    pathB.cubicTo(720.655701f, 410.864105f, 718.747925f, 409.936707f, 718.054138f, 409.318756f);
    pathB.moveTo(711.928711f, 364.782227f);
    pathB.cubicTo(711.195923f, 365.134613f, 710.648865f, 365.834412f, 710.648865f, 366.794769f);
    pathB.lineTo(710.648865f, 407.392059f);
    pathB.cubicTo(710.648865f, 409.397614f, 708.519531f, 411.37323f, 708.547485f, 411.684692f);
    pathB.cubicTo(708.550476f, 411.745605f, 711.838867f, 413.067322f, 713.849365f, 414.368073f);
    pathB.cubicTo(717.766663f, 416.906738f, 720.162537f, 415.845551f, 722.354797f, 414.073608f);
    pathB.cubicTo(724.059875f, 412.69397f, 726.55957f, 410.981903f, 730.675537f, 410.124359f);
    pathB.cubicTo(729.75708f, 409.143066f, 729.213013f, 407.993042f, 729.213013f, 406.683289f);
    pathB.cubicTo(729.213013f, 399.630402f, 729.209045f, 396.103455f, 729.209045f, 389.047546f);
    pathB.cubicTo(729.209045f, 387.648956f, 730.577698f, 385.292023f, 730.583679f, 385.149261f);
    pathB.cubicTo(730.583679f, 385.149261f, 720.888306f, 378.762207f, 719.609497f, 378.947906f);
    pathB.cubicTo(719.275085f, 378.996826f, 717.872498f, 381.118164f, 716.868225f, 381.896851f);
    pathB.lineTo(716.868225f, 365.046783f);
    pathB.cubicTo(716.868225f, 363.740021f, 716.960083f, 363.043213f, 717.597961f, 362);
    pathB.cubicTo(715.331848f, 363.104095f, 714.19873f, 363.657166f, 711.928711f, 364.782227f);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpeverytechpro_blogspot_com100(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1074.29285f, 627.292786f);
    path.quadTo(1074.58582f, 627, 1075, 627);
    path.lineTo(1117, 627);
    path.quadTo(1124.04163f, 627, 1129.02246f, 631.9776f);
    path.quadTo(1134, 636.958374f, 1134, 644);
    path.lineTo(1134, 645);
    path.quadTo(1134, 652.041626f, 1129.02246f, 657.0224f);
    path.quadTo(1124.04163f, 662, 1117, 662);
    path.lineTo(1075, 662);
    path.quadTo(1074.58582f, 662, 1074.29285f, 661.707214f);
    path.quadTo(1074, 661.414185f, 1074, 661);
    path.lineTo(1074, 628);
    path.quadTo(1074, 627.585815f, 1074.29285f, 627.292786f);
    path.close();
    path.moveTo(1076, 629);
    path.lineTo(1117, 629);
    path.cubicTo(1125.2843f, 629, 1132, 635.715698f, 1132, 644);
    path.lineTo(1132, 645);
    path.cubicTo(1132, 653.284302f, 1125.2843f, 660, 1117, 660);
    path.lineTo(1076, 660);
    path.lineTo(1076, 629);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(1074, 627);
    pathB.lineTo(1075, 628);
    pathB.lineTo(1116.5f, 644.5f);
    pathB.lineTo(1134, 627);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpflite_com41(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(301.464081f, 424);
    path.lineTo(296, 433.46405f);
    path.lineTo(296, 433.810822f);
    path.lineTo(303.25589f, 438);
    path.lineTo(304.729736f, 438);
    path.lineTo(311, 427.139557f);
    path.lineTo(311, 426.305237f);
    path.lineTo(307.007202f, 424);
    path.lineTo(301.464081f, 424);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(302.849854f, 421.599762f);
    pathB.lineTo(311.510101f, 426.599762f);
    pathB.lineTo(304.510101f, 438.724121f);
    pathB.lineTo(295.849854f, 433.724121f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpilkoora_com37(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(818, 157);
    path.cubicTo(818, 148.715729f, 824.715698f, 142, 833, 142);
    path.lineTo(909, 142);
    path.lineTo(909, 143);
    path.lineTo(833, 143);
    path.cubicTo(825.268005f, 143, 819, 149.268005f, 819, 157);
    path.lineTo(819, 926);
    path.lineTo(818, 926);
    path.lineTo(818, 157);
    path.close();
    path.moveTo(1184, 926);
    path.lineTo(1185, 926);
    path.lineTo(1185, 157);
    path.cubicTo(1185, 148.715729f, 1178.2843f, 142, 1170, 142);
    path.lineTo(1093, 142);
    path.lineTo(1093, 143);
    path.lineTo(1170, 143);
    path.cubicTo(1177.73193f, 143, 1184, 149.268005f, 1184, 157);
    path.lineTo(1184, 926);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(1185, 142);
    pathB.lineTo(1001.5f, 325.5f);
    pathB.lineTo(1001.5f, 782.5f);
    pathB.lineTo(1185, 966);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpmm4everfriends_com43(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(540.74231f, 215.922546f);
    path.cubicTo(540.893127f, 215.391159f, 541.443909f, 215.090134f, 541.972473f, 215.250168f);
    path.lineTo(581.213318f, 227.131104f);
    path.cubicTo(581.741882f, 227.291153f, 582.048157f, 227.851654f, 581.897339f, 228.383041f);
    path.lineTo(576.708923f, 246.663925f);
    path.cubicTo(576.558167f, 247.195297f, 576.007324f, 247.496338f, 575.47876f, 247.336288f);
    path.lineTo(536.237915f, 235.455353f);
    path.cubicTo(535.709351f, 235.295319f, 535.403137f, 234.734802f, 535.553894f, 234.20343f);
    path.lineTo(540.74231f, 215.922546f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(541.015381f, 214.960388f);
    pathB.lineTo(582.17041f, 227.420883f);
    pathB.lineTo(576.435852f, 247.626068f);
    pathB.lineTo(535.280823f, 235.165573f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpmtrk_uz27(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(33, 787);
    path.lineTo(33, 412);
    path.lineTo(1233, 412);
    path.lineTo(1233, 787);
    path.quadTo(1233, 793.213196f, 1228.60803f, 797.607971f);
    path.quadTo(1224.21326f, 802, 1218, 802);
    path.lineTo(48, 802);
    path.quadTo(41.7867966f, 802, 37.3919983f, 797.607971f);
    path.quadTo(33, 793.213196f, 33, 787);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(33, 412);
    pathB.lineTo(1233, 412);
    pathB.lineTo(1233, 787);
    pathB.quadTo(1233, 793.213196f, 1228.60791f, 797.608032f);
    pathB.quadTo(1224.21313f, 802, 1218, 802);
    pathB.lineTo(48, 802);
    pathB.quadTo(41.7867432f, 802, 37.3919678f, 797.608032f);
    pathB.quadTo(33, 793.213196f, 33, 787);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpfrauen_magazin_com83(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(808, 886);
    path.cubicTo(805.581055f, 886, 803.563293f, 887.717773f, 803.100037f, 890);
    path.lineTo(1122.90002f, 890);
    path.cubicTo(1122.43677f, 887.717773f, 1120.41895f, 886, 1118, 886);
    path.lineTo(808, 886);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(808, 886);
    pathB.lineTo(1118, 886);
    pathB.cubicTo(1120.76147f, 886, 1123, 888.238586f, 1123, 891);
    pathB.lineTo(1123, 1521);
    pathB.cubicTo(1123, 1523.20911f, 1120.76147f, 1525, 1118, 1525);
    pathB.lineTo(808, 1525);
    pathB.cubicTo(805.238586f, 1525, 803, 1523.20911f, 803, 1521);
    pathB.lineTo(803, 891);
    pathB.cubicTo(803, 888.238586f, 805.238586f, 886, 808, 886);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpi_gino_com16(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(184, 734);
    path.quadTo(133.051727f, 734, 97.0258636f, 770.025879f);
    path.quadTo(61, 806.051758f, 61, 857);
    path.quadTo(61, 895.835083f, 81.9317017f, 926);
    path.lineTo(286.068298f, 926);
    path.quadTo(307, 895.835083f, 307, 857);
    path.quadTo(307, 806.051758f, 270.974121f, 770.025879f);
    path.quadTo(234.948273f, 734, 184, 734);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(185, 734);
    pathB.cubicTo(252.93103f, 734, 308, 789.06897f, 308, 857);
    pathB.cubicTo(308, 924.93103f, 252.93103f, 980, 185, 980);
    pathB.lineTo(184, 980);
    pathB.cubicTo(116.068977f, 980, 61, 924.93103f, 61, 857);
    pathB.cubicTo(61, 789.06897f, 116.068977f, 734, 184, 734);
    pathB.lineTo(185, 734);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skppchappy_com_au102(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(363, 493);
    path.cubicTo(360.790863f, 493, 359, 494.790863f, 359, 497);
    path.lineTo(359, 656);
    path.cubicTo(359, 658.209106f, 360.790863f, 660, 363, 660);
    path.lineTo(623.001709f, 660);
    path.cubicTo(624.657776f, 659.999023f, 626, 658.65625f, 626, 657);
    path.lineTo(626, 496);
    path.cubicTo(626, 494.343872f, 624.657959f, 493.00116f, 623.002075f, 493);
    path.lineTo(363, 493);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(362, 494);
    pathB.lineTo(623, 494);
    pathB.cubicTo(624.65686f, 494, 626, 494.895416f, 626, 496);
    pathB.lineTo(626, 657);
    pathB.cubicTo(626, 658.65686f, 624.65686f, 660, 623, 660);
    pathB.lineTo(362, 660);
    pathB.cubicTo(360.34314f, 660, 359, 658.65686f, 359, 657);
    pathB.lineTo(359, 496);
    pathB.cubicTo(359, 494.895416f, 360.34314f, 494, 362, 494);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpsciality_com161(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(656, 728);
    path.cubicTo(653.790833f, 728, 652, 729.790833f, 652, 732);
    path.lineTo(652, 789);
    path.cubicTo(652, 791.209106f, 653.790833f, 793, 656, 793);
    path.lineTo(769.001282f, 793);
    path.cubicTo(770.657532f, 792.999268f, 772, 791.656433f, 772, 790);
    path.lineTo(772, 731);
    path.cubicTo(772, 729.34314f, 770.65686f, 728, 769, 728);
    path.lineTo(656, 728);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(655, 729);
    pathB.lineTo(769, 729);
    pathB.cubicTo(770.65686f, 729, 772, 729.895447f, 772, 731);
    pathB.lineTo(772, 790);
    pathB.cubicTo(772, 791.65686f, 770.65686f, 793, 769, 793);
    pathB.lineTo(655, 793);
    pathB.cubicTo(653.34314f, 793, 652, 791.65686f, 652, 790);
    pathB.lineTo(652, 731);
    pathB.cubicTo(652, 729.895447f, 653.34314f, 729, 655, 729);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpsudoestenegocios_com186(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(0, 495);
    path.lineTo(1.23685242e-14f, 293);
    path.lineTo(44, 293);
    path.quadTo(45.6568527f, 293, 46.8288002f, 294.171204f);
    path.quadTo(48, 295.34314f, 48, 297);
    path.lineTo(48, 491);
    path.quadTo(48, 492.65686f, 46.8288002f, 493.828796f);
    path.quadTo(45.6568527f, 495, 44, 495);
    path.lineTo(0, 495);
    path.close();
    path.moveTo(1, 294);
    path.lineTo(44, 294);
    path.cubicTo(45.6568565f, 294, 47, 295.34314f, 47, 297);
    path.lineTo(47, 491);
    path.cubicTo(47, 492.65686f, 45.6568565f, 494, 44, 494);
    path.lineTo(1, 494);
    path.lineTo(1, 294);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(48, 495);
    pathB.lineTo(24, 471);
    pathB.lineTo(24, 317);
    pathB.lineTo(48, 293);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpthesuburbanite_com213(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(863.439026f, 692);
    path.lineTo(863.283264f, 692);
    path.lineTo(802, 708.420837f);
    path.lineTo(802, 718.773621f);
    path.lineTo(866, 701.624817f);
    path.lineTo(866, 701.557922f);
    path.lineTo(863.439026f, 692);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(783.256775f, 713.443054f);
    pathB.lineTo(863.428589f, 691.96106f);
    pathB.lineTo(866.016724f, 701.620361f);
    pathB.lineTo(785.84491f, 723.102356f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skphostloco_com11(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(6.66133815e-16f, 648);
    path.lineTo(25.8522835f, 648);
    path.quadTo(27.5087376f, 647.999634f, 28.6807098f, 646.82843f);
    path.quadTo(29.8518829f, 645.656433f, 29.8522835f, 644);
    path.lineTo(29.8522835f, 467);
    path.quadTo(29.8518829f, 465.343536f, 28.6807098f, 464.17157f);
    path.quadTo(27.5087376f, 463.000397f, 25.8522835f, 463);
    path.lineTo(2.22044605e-16f, 463);
    path.lineTo(6.66133815e-16f, 648);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(0, 463);
    pathB.lineTo(30, 463);
    pathB.lineTo(30, 648);
    pathB.lineTo(0, 648);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpsergeychunkevich_com8(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(0, 926);
    path.lineTo(0, 0);
    path.lineTo(1265, 0);
    path.lineTo(1265, 926);
    path.lineTo(0, 926);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(37, 374);
    pathB.lineTo(37, 535);
    pathB.cubicTo(37, 536.65686f, 35.6568565f, 538, 34, 538);
    pathB.lineTo(1.02866934e-14f, 538);
    pathB.lineTo(6.12303177e-17f, 371);
    pathB.lineTo(34, 371);
    pathB.cubicTo(35.6568565f, 371, 37, 372.34314f, 37, 374);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skptracksflow_com9(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(16, 56);
    path.lineTo(32, 56);
    path.lineTo(32, 72);
    path.lineTo(16, 72);
    path.lineTo(16, 56);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kEvenOdd);
    pathB.moveTo(31.65625f, 70.0555649f);
    pathB.lineTo(31.65625f, 70.0554962f);
    pathB.lineTo(26.9727192f, 65.3615341f);
    pathB.cubicTo(27.6210003f, 64.4029694f, 28.0048752f, 63.2470932f, 28.0048752f, 62.0027809f);
    pathB.cubicTo(28.0048752f, 58.6875305f, 25.3199062f, 56, 22.0046558f, 56);
    pathB.cubicTo(18.6894073f, 56, 16.0031872f, 58.6875305f, 16.0031872f, 62.0027809f);
    pathB.cubicTo(16.0031872f, 65.3180008f, 18.6913433f, 68.0055618f, 22.0066261f, 68.0055618f);
    pathB.cubicTo(23.2509995f, 68.0055618f, 24.4072189f, 67.6187515f, 25.3657818f, 66.9704056f);
    pathB.lineTo(30.0599365f, 71.65625f);
    pathB.lineTo(30.0600014f, 71.65625f);
    pathB.cubicTo(30.2668133f, 71.875f, 30.5524693f, 71.9992828f, 30.868f, 71.9992828f);
    pathB.cubicTo(31.4994049f, 71.9992828f, 32.0014687f, 71.4909363f, 32.0014687f, 70.8595276f);
    pathB.cubicTo(32.0015335f, 70.5439072f, 31.875f, 70.2623444f, 31.65625f, 70.0555649f);
    pathB.close();
    pathB.moveTo(18.0054054f, 62.0027809f);
    pathB.cubicTo(18.0054054f, 59.7925949f, 19.7970943f, 58.0009079f, 22.0072823f, 58.0009079f);
    pathB.cubicTo(24.2174377f, 58.0009079f, 26.0091248f, 59.7925949f, 26.0091248f, 62.0027809f);
    pathB.cubicTo(26.0091248f, 64.2129364f, 24.2174377f, 66.0046234f, 22.0072803f, 66.0046234f);
    pathB.cubicTo(19.7970943f, 66.0045929f, 18.0054054f, 64.2129059f, 18.0054054f, 62.0027809f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpautobutler_dk29(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(0, 926);
    path.lineTo(0, 0);
    path.lineTo(1265, 0);
    path.lineTo(1265, 926);
    path.lineTo(0, 926);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(21, 162);
    pathB.lineTo(21, 301);
    pathB.lineTo(8.57224448e-15f, 301);
    pathB.lineTo(6.12303177e-17f, 162);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skponlinecollege_org144(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(179, 407);
    path.cubicTo(177.34314f, 407, 176, 408.34314f, 176, 410);
    path.lineTo(176, 436);
    path.cubicTo(176, 437.65686f, 177.34314f, 439, 179, 439);
    path.lineTo(337.002289f, 439);
    path.cubicTo(338.105835f, 438.998779f, 339, 438.103821f, 339, 437);
    path.lineTo(339, 409);
    path.cubicTo(339, 407.896362f, 338.10611f, 407.001526f, 337.002838f, 407);
    path.lineTo(179, 407);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(179, 408);
    pathB.lineTo(337, 408);
    pathB.cubicTo(338.65686f, 408, 340, 408.895416f, 340, 410);
    pathB.lineTo(340, 436);
    pathB.cubicTo(340, 437.65686f, 338.65686f, 439, 337, 439);
    pathB.lineTo(179, 439);
    pathB.cubicTo(177.895432f, 439, 177, 437.65686f, 177, 436);
    pathB.lineTo(177, 410);
    pathB.cubicTo(177, 408.895416f, 177.895432f, 408, 179, 408);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpnational_com_au81(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(807, 817);
    path.quadTo(806.585876f, 817.000122f, 806.292908f, 817.292908f);
    path.quadTo(806.000122f, 817.585876f, 806, 818);
    path.lineTo(806, 881);
    path.lineTo(1111, 881);
    path.lineTo(1111, 818);
    path.quadTo(1110.99988f, 817.585876f, 1110.70715f, 817.292908f);
    path.quadTo(1110.41406f, 817.000122f, 1110, 817);
    path.lineTo(807, 817);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(807, 817);
    pathB.lineTo(1110, 817);
    pathB.cubicTo(1110.55225f, 817, 1111, 817.447693f, 1111, 818);
    pathB.lineTo(1111, 880);
    pathB.lineTo(806, 880);
    pathB.lineTo(806, 818);
    pathB.cubicTo(806, 817.447693f, 806.447693f, 817, 807, 817);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skprentacheat_com30(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(967, 263);
    path.quadTo(966.585876f, 263.000092f, 966.292908f, 263.292908f);
    path.quadTo(966.000122f, 263.585876f, 966, 264);
    path.lineTo(966, 301);
    path.lineTo(1214, 301);
    path.lineTo(1214, 264);
    path.quadTo(1213.99988f, 263.585876f, 1213.70715f, 263.292908f);
    path.quadTo(1213.41406f, 263.000092f, 1213, 263);
    path.lineTo(967, 263);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(967, 263);
    pathB.lineTo(1213, 263);
    pathB.cubicTo(1213.55225f, 263, 1214, 263.447723f, 1214, 264);
    pathB.lineTo(1214, 300);
    pathB.lineTo(966, 300);
    pathB.lineTo(966, 264);
    pathB.cubicTo(966, 263.447723f, 966.447693f, 263, 967, 263);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpbreakmystyle_com10(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(271.032867f, -5.32907052e-15f);
    path.lineTo(56.9671326f, -5.16253706e-15f);
    path.quadTo(52.7835083f, 3.69968891f, 48.7416f, 7.74160004f);
    path.quadTo(1, 55.4831848f, 1, 123);
    path.quadTo(1, 190.516815f, 48.7416f, 238.258392f);
    path.quadTo(96.4831848f, 286, 164, 286);
    path.quadTo(231.516815f, 286, 279.258392f, 238.258392f);
    path.quadTo(327, 190.516815f, 327, 123);
    path.quadTo(327, 55.4831848f, 279.258392f, 7.74160004f);
    path.quadTo(275.216431f, 3.69964004f, 271.032867f, -5.32907052e-15f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(327, 123);
    pathB.quadTo(327, 190.516815f, 279.258392f, 238.258392f);
    pathB.quadTo(231.516815f, 286, 164, 286);
    pathB.quadTo(96.4831848f, 286, 48.7416f, 238.258392f);
    pathB.quadTo(1, 190.516815f, 1, 123);
    pathB.quadTo(1, 55.4831848f, 48.7416f, 7.74160004f);
    pathB.quadTo(96.4831848f, -40, 164, -40);
    pathB.quadTo(231.516815f, -40, 279.258392f, 7.74160004f);
    pathB.quadTo(327, 55.4831848f, 327, 123);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpsd_graphic_net104(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(475.421448f, 836.985962f);
    path.lineTo(461.280975f, 841.990662f);
    path.cubicTo(466.80899f, 857.609802f, 458.62854f, 874.752991f, 443.009399f, 880.281006f);
    path.cubicTo(435.199829f, 883.044983f, 427.009247f, 882.381897f, 420.080048f, 879.075378f);
    path.lineTo(413.620056f, 892.613037f);
    path.quadTo(430.419983f, 900.629761f, 447.96701f, 894.43811f);
    path.quadTo(448.00708f, 894.42395f, 448.014038f, 894.421509f);
    path.quadTo(448.043976f, 894.410889f, 448.061066f, 894.404846f);
    path.quadTo(465.596313f, 888.179932f, 473.613037f, 871.379944f);
    path.quadTo(477.351227f, 863.546143f, 478, 855.549866f);
    path.lineTo(478, 848.804321f);
    path.quadTo(477.528076f, 842.93811f, 475.421448f, 836.985962f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(405.592621f, 909.435547f);
    pathB.lineTo(390.578583f, 867.014099f);
    pathB.lineTo(433, 852.000061f);
    pathB.lineTo(490.435486f, 879.40741f);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpnaoxrane_ru23(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(458.703552f, 275.050262f);
    path.quadTo(487.41687f, 273.000702f, 528, 273);
    path.lineTo(529, 273);
    path.quadTo(530.242371f, 273.000305f, 531.121338f, 273.878693f);
    path.quadTo(531.999695f, 274.75766f, 532, 276);
    path.lineTo(532, 378);
    path.quadTo(531.990173f, 380.898804f, 503.296448f, 382.949738f);
    path.quadTo(474.58313f, 384.999298f, 434, 385);
    path.lineTo(433, 385);
    path.quadTo(431.75766f, 384.999695f, 430.878693f, 384.121307f);
    path.quadTo(430.000305f, 383.24234f, 430, 382);
    path.lineTo(430, 280);
    path.quadTo(430.009796f, 277.101196f, 458.703552f, 275.050262f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(528, 278);
    pathB.lineTo(529, 278);
    pathB.cubicTo(530.65686f, 278, 532, 278, 532, 278);
    pathB.lineTo(532, 378);
    pathB.cubicTo(532, 379.104584f, 488.123932f, 380, 434, 380);
    pathB.lineTo(433, 380);
    pathB.cubicTo(431.34314f, 380, 430, 380, 430, 380);
    pathB.lineTo(430, 280);
    pathB.cubicTo(430, 278.895416f, 473.876068f, 278, 528, 278);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skptcmevents_org23(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(465.503998f, 546);
    path.lineTo(347, 546);
    path.lineTo(347, 632);
    path.lineTo(469.104248f, 632);
    path.quadTo(470.79007f, 627.638672f, 471.833496f, 621.036255f);
    path.quadTo(474.902588f, 601.562866f, 470.591064f, 574.024353f);
    path.lineTo(468.507751f, 560.724426f);
    path.quadTo(467.275146f, 552.856262f, 465.84668f, 547.288391f);
    path.quadTo(465.670349f, 546.601501f, 465.503998f, 546);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(363.052246f, 542.495361f);
    pathB.lineTo(463.779907f, 542.671143f);
    pathB.cubicTo(464.829529f, 542.672974f, 466.946289f, 550.755676f, 468.507751f, 560.724426f);
    pathB.lineTo(470.591064f, 574.024353f);
    pathB.cubicTo(476.26178f, 610.226624f, 471.498932f, 639.557922f, 459.953003f, 639.537781f);
    pathB.lineTo(368.727936f, 639.378601f);
    pathB.cubicTo(351.933868f, 639.349304f, 337.053741f, 631.244324f, 335.492249f, 621.275574f);
    pathB.lineTo(325.968597f, 560.475708f);
    pathB.cubicTo(324.407104f, 550.506958f, 341.01001f, 542.456909f, 363.052246f, 542.495361f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpredbullskatearcade_es16(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(936.765625f, 458.965302f);
    path.cubicTo(937.028442f, 453.863251f, 933.145813f, 449.864502f, 928.093445f, 450.033905f);
    path.lineTo(661.882263f, 458.958862f);
    path.lineTo(661.875366f, 458.959106f);
    path.cubicTo(656.828369f, 459.13205f, 652.525085f, 463.399719f, 652.258545f, 468.496124f);
    path.lineTo(652.258179f, 468.503662f);
    path.lineTo(649.021729f, 531.322754f);
    path.cubicTo(648.75885f, 536.424805f, 652.641479f, 540.423523f, 657.693848f, 540.25415f);
    path.lineTo(923.905029f, 531.329163f);
    path.cubicTo(928.955017f, 531.159851f, 933.262268f, 526.890442f, 933.528809f, 521.791565f);
    path.lineTo(933.529175f, 521.784363f);
    path.lineTo(936.765625f, 458.965302f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(661.882263f, 458.958862f);
    pathB.lineTo(928.093445f, 450.033905f);
    pathB.cubicTo(929.103882f, 450, 929.709961f, 454.108612f, 929.447144f, 459.210663f);
    pathB.lineTo(926.210693f, 522.029724f);
    pathB.cubicTo(926.079224f, 524.58075f, 925.153442f, 526.676208f, 924.143066f, 526.710083f);
    pathB.lineTo(657.931885f, 535.635071f);
    pathB.cubicTo(652.879456f, 535.804443f, 648.890259f, 533.873779f, 649.021729f, 531.322754f);
    pathB.lineTo(652.258179f, 468.503662f);
    pathB.cubicTo(652.520996f, 463.401611f, 656.829834f, 459.128235f, 661.882263f, 458.958862f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpfinanzasdigital_com9(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(156, 126);
    path.quadTo(154.343552f, 126.000397f, 153.17157f, 127.17157f);
    path.quadTo(152.000397f, 128.343552f, 152, 130);
    path.lineTo(152, 174);
    path.lineTo(1114, 174);
    path.lineTo(1114, 130);
    path.quadTo(1113.99963f, 128.343552f, 1112.82837f, 127.17157f);
    path.quadTo(1111.65649f, 126.000397f, 1110, 126);
    path.lineTo(156, 126);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(156, 126);
    pathB.lineTo(1110, 126);
    pathB.cubicTo(1111.65686f, 126, 1113, 127.790863f, 1113, 130);
    pathB.lineTo(1113, 174);
    pathB.lineTo(153, 174);
    pathB.lineTo(153, 130);
    pathB.cubicTo(153, 127.790863f, 154.34314f, 126, 156, 126);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skppartainasdemo250_org56(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(182.000015f, 645);
    path.lineTo(182, 640);
    path.cubicTo(174.322327f, 640, 166.644669f, 637.071045f, 160.786804f, 631.213196f);
    path.cubicTo(149.071075f, 619.497437f, 149.071075f, 600.502563f, 160.786804f, 588.786804f);
    path.lineTo(157.251266f, 585.251221f);
    path.quadTo(147, 595.502502f, 147.000015f, 610);
    path.quadTo(147, 624.482605f, 157.230255f, 634.727722f);
    path.quadTo(157.251251f, 634.748779f, 157.251282f, 634.748779f);
    path.quadTo(157.282852f, 634.780334f, 157.272263f, 634.769775f);
    path.quadTo(167.517334f, 645, 182.000015f, 645);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(182, 659.497498f);
    pathB.lineTo(206.748749f, 634.748718f);
    pathB.lineTo(182.000015f, 610);
    pathB.lineTo(132.502533f, 610);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpmlk_com326(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(154, 670);
    path.cubicTo(151.238571f, 670, 149, 672.238586f, 149, 675);
    path.lineTo(149, 710.001465f);
    path.cubicTo(149.000809f, 712.209961f, 150.791367f, 714, 153, 714);
    path.lineTo(189, 714);
    path.cubicTo(191.209137f, 714, 193, 712.209167f, 193, 710);
    path.lineTo(193, 675);
    path.cubicTo(193, 672.238586f, 190.761429f, 670, 188, 670);
    path.lineTo(154, 670);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(154, 671);
    pathB.lineTo(188, 671);
    pathB.cubicTo(190.761429f, 671, 193, 672.790833f, 193, 675);
    pathB.lineTo(193, 710);
    pathB.cubicTo(193, 712.761414f, 190.761429f, 715, 188, 715);
    pathB.lineTo(154, 715);
    pathB.cubicTo(151.238571f, 715, 149, 712.761414f, 149, 710);
    pathB.lineTo(149, 675);
    pathB.cubicTo(149, 672.790833f, 151.238571f, 671, 154, 671);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpcyclist_friends_gr52(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(50, 182);
    path.lineTo(1215, 182);
    path.lineTo(1215, 202);
    path.quadTo(1214.99951f, 204.070572f, 1213.53552f, 205.535538f);
    path.quadTo(1212.07056f, 206.999496f, 1210, 207);
    path.lineTo(55, 207);
    path.quadTo(52.9294319f, 206.999496f, 51.4644661f, 205.535538f);
    path.quadTo(50.0004997f, 204.070572f, 50, 202);
    path.lineTo(50, 182);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(50, 183);
    pathB.lineTo(1215, 183);
    pathB.lineTo(1215, 202);
    pathB.cubicTo(1215, 204.761429f, 1212.76147f, 207, 1210, 207);
    pathB.lineTo(55, 207);
    pathB.cubicTo(52.238575f, 207, 50, 204.761429f, 50, 202);
    pathB.lineTo(50, 183);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_fj_p_com_22(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(172, 201);
    path.lineTo(172, 202);
    path.lineTo(220, 202);
    path.cubicTo(221.65686f, 202, 223, 200.65686f, 223, 199);
    path.cubicTo(223, 200.104568f, 221.65686f, 201, 220, 201);
    path.lineTo(172, 201);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(161, 202);
    pathB.lineTo(161, 199);
    pathB.lineTo(223, 199.000015f);
    pathB.lineTo(223, 202);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_lavoixdunord_fr_11(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(806, 57);
    path.cubicTo(806, 55.3431473f, 807.34314f, 54, 809, 54);
    path.lineTo(930, 54);
    path.cubicTo(931.65686f, 54, 933, 55.3431473f, 933, 57);
    path.lineTo(933, 91);
    path.cubicTo(933, 92.6568527f, 931.65686f, 94, 930, 94);
    path.lineTo(809, 94);
    path.cubicTo(807.34314f, 94, 806, 92.6568527f, 806, 91);
    path.lineTo(806, 57);
    path.close();
    path.moveTo(808, 58);
    path.cubicTo(808, 56.8954315f, 808.895447f, 56, 810, 56);
    path.lineTo(929, 56);
    path.cubicTo(930.104553f, 56, 931, 56.8954315f, 931, 58);
    path.lineTo(931, 90);
    path.cubicTo(931, 91.1045685f, 930.104553f, 92, 929, 92);
    path.lineTo(810, 92);
    path.cubicTo(808.895447f, 92, 808, 91.1045685f, 808, 90);
    path.lineTo(808, 58);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(806, 54);
    pathB.lineTo(808, 56);
    pathB.lineTo(935.02002f, 56.0200005f);
    pathB.lineTo(933, 54);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skppptv_com_62(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(173, 5342);
    path.quadTo(171.343536f, 5342.00049f, 170.17157f, 5343.17139f);
    path.quadTo(169.000397f, 5344.34375f, 169, 5346);
    path.lineTo(169, 5372);
    path.lineTo(234, 5372);
    path.lineTo(234, 5346);
    path.quadTo(233.999603f, 5344.34375f, 232.82843f, 5343.17139f);
    path.quadTo(231.656464f, 5342.00049f, 230, 5342);
    path.lineTo(173, 5342);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(173, 5342);
    pathB.lineTo(230, 5342);
    pathB.cubicTo(231.65686f, 5342, 233, 5343.79102f, 233, 5346);
    pathB.lineTo(233, 5372);
    pathB.lineTo(169, 5372);
    pathB.lineTo(169, 5346);
    pathB.cubicTo(169, 5343.79102f, 170.790863f, 5342, 173, 5342);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_booking_com_68(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(90, 187);
    path.cubicTo(90, 185.34314f, 91.3431473f, 184, 93, 184);
    path.lineTo(588, 184);
    path.cubicTo(589.65686f, 184, 591, 185.34314f, 591, 187);
    path.lineTo(591, 218);
    path.cubicTo(591, 219.65686f, 589.65686f, 221, 588, 221);
    path.lineTo(93, 221);
    path.cubicTo(91.3431473f, 221, 90, 219.65686f, 90, 218);
    path.lineTo(90, 187);
    path.close();
    path.moveTo(92, 188);
    path.cubicTo(92, 186.895432f, 92.8954315f, 186, 94, 186);
    path.lineTo(587, 186);
    path.cubicTo(588.104553f, 186, 589, 186.895432f, 589, 188);
    path.lineTo(589, 217);
    path.cubicTo(589, 218.104568f, 588.104553f, 219, 587, 219);
    path.lineTo(94, 219);
    path.cubicTo(92.8954315f, 219, 92, 218.104568f, 92, 217);
    path.lineTo(92, 188);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(90, 184);
    pathB.lineTo(92, 186);
    pathB.lineTo(593.02002f, 186.020004f);
    pathB.lineTo(591, 184);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_despegar_com_mx_272(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(635, 1788);
    path.cubicTo(635, 1786.34314f, 636.34314f, 1785, 638, 1785);
    path.lineTo(832, 1785);
    path.cubicTo(833.65686f, 1785, 835, 1786.34314f, 835, 1788);
    path.lineTo(835, 1812);
    path.cubicTo(835, 1813.65686f, 833.65686f, 1815, 832, 1815);
    path.lineTo(638, 1815);
    path.cubicTo(636.34314f, 1815, 635, 1813.65686f, 635, 1812);
    path.lineTo(635, 1788);
    path.close();
    path.moveTo(637, 1789);
    path.cubicTo(637, 1787.89539f, 637.895447f, 1787, 639, 1787);
    path.lineTo(831, 1787);
    path.cubicTo(832.104553f, 1787, 833, 1787.89539f, 833, 1789);
    path.lineTo(833, 1811);
    path.cubicTo(833, 1812.10461f, 832.104553f, 1813, 831, 1813);
    path.lineTo(639, 1813);
    path.cubicTo(637.895447f, 1813, 637, 1812.10461f, 637, 1811);
    path.lineTo(637, 1789);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(835, 1785);
    pathB.lineTo(833, 1787);
    pathB.lineTo(832.97998f, 1817.02002f);
    pathB.lineTo(835, 1815);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_joomla_org_23(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(320, 347);
    path.cubicTo(320, 344.238586f, 322.238586f, 342, 325, 342);
    path.lineTo(416, 342);
    path.cubicTo(418.761414f, 342, 421, 344.238586f, 421, 347);
    path.cubicTo(421, 344.790863f, 418.761414f, 343, 416, 343);
    path.lineTo(325, 343);
    path.cubicTo(322.238586f, 343, 320, 344.790863f, 320, 347);
    path.close();
    path.moveTo(320, 378);
    path.cubicTo(320, 380.761414f, 322.238586f, 383, 325, 383);
    path.lineTo(416, 383);
    path.cubicTo(418.761414f, 383, 421, 380.761414f, 421, 378);
    path.cubicTo(421, 380.209137f, 418.761414f, 382, 416, 382);
    path.lineTo(325, 382);
    path.cubicTo(322.238586f, 382, 320, 380.209137f, 320, 378);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(320, 383);
    pathB.lineTo(320, 378);
    pathB.lineTo(421, 378.000031f);
    pathB.lineTo(421, 383);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_macrumors_com_131(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(136, 14089);
    path.lineTo(136, 14056);
    path.lineTo(778, 14056);
    path.lineTo(778, 14089);
    path.quadTo(777.999573f, 14090.6562f, 776.82843f, 14091.8281f);
    path.quadTo(775.656433f, 14093, 774, 14093);
    path.lineTo(140, 14093);
    path.quadTo(138.343552f, 14093, 137.17157f, 14091.8281f);
    path.quadTo(136.000397f, 14090.6562f, 136, 14089);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(136, 14057);
    pathB.lineTo(778, 14057);
    pathB.lineTo(778, 14089);
    pathB.cubicTo(778, 14091.209f, 776.209167f, 14093, 774, 14093);
    pathB.lineTo(140, 14093);
    pathB.cubicTo(137.790863f, 14093, 136, 14091.209f, 136, 14089);
    pathB.lineTo(136, 14057);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_leadpages_net_84(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(377.1716f, 5910.17139f);
    path.cubicTo(376.447723f, 5910.89551f, 376, 5911.89551f, 376, 5913);
    path.lineTo(376, 5972);
    path.cubicTo(376, 5974.20898f, 377.790863f, 5976, 380, 5976);
    path.cubicTo(378.34314f, 5976, 377, 5974.20898f, 377, 5972);
    path.lineTo(377, 5913);
    path.cubicTo(377, 5912.17139f, 377.335785f, 5911.42188f, 377.878693f, 5910.87891f);
    path.lineTo(377.1716f, 5910.17139f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(376, 5909);
    pathB.lineTo(378.481873f, 5909);
    pathB.lineTo(379.999878f, 5976);
    pathB.lineTo(376, 5976);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_briian_com_34(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(843, 216);
    path.cubicTo(843, 213.238571f, 845.238586f, 211, 848, 211);
    path.lineTo(1191, 211);
    path.cubicTo(1193.76147f, 211, 1196, 213.238571f, 1196, 216);
    path.lineTo(1196, 779);
    path.cubicTo(1196, 781.761414f, 1193.76147f, 784, 1191, 784);
    path.lineTo(848, 784);
    path.cubicTo(845.238586f, 784, 843, 781.761414f, 843, 779);
    path.lineTo(843, 216);
    path.close();
    path.moveTo(844, 217);
    path.cubicTo(844, 214.238571f, 846.238586f, 212, 849, 212);
    path.lineTo(1190, 212);
    path.cubicTo(1192.76147f, 212, 1195, 214.238571f, 1195, 217);
    path.lineTo(1195, 778);
    path.cubicTo(1195, 779.65686f, 1192.76147f, 781, 1190, 781);
    path.lineTo(849, 781);
    path.cubicTo(846.238586f, 781, 844, 779.65686f, 844, 778);
    path.lineTo(844, 217);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(843, 784);
    pathB.lineTo(843, 779);
    pathB.lineTo(1196, 779.000061f);
    pathB.lineTo(1196, 784);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_sciality_com_100(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(162, 468);
    path.cubicTo(159.790863f, 468, 158, 469.790863f, 158, 472);
    path.lineTo(158, 528);
    path.cubicTo(158, 530.209106f, 159.790863f, 532, 162, 532);
    path.lineTo(275, 532);
    path.cubicTo(277.209137f, 532, 279, 530.209106f, 279, 528);
    path.lineTo(279, 472);
    path.cubicTo(279, 469.790863f, 277.209137f, 468, 275, 468);
    path.lineTo(162, 468);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(275, 468);
    pathB.cubicTo(276.65686f, 468, 278, 469.34314f, 278, 471);
    pathB.lineTo(278, 529);
    pathB.cubicTo(278, 530.65686f, 276.65686f, 532, 275, 532);
    pathB.lineTo(161, 532);
    pathB.cubicTo(159.34314f, 532, 158, 530.65686f, 158, 529);
    pathB.lineTo(158, 471);
    pathB.cubicTo(158, 469.34314f, 159.34314f, 468, 161, 468);
    pathB.lineTo(275, 468);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_sciality_com_101(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(162, 468);
    path.cubicTo(159.790863f, 468, 158, 469.790863f, 158, 472);
    path.lineTo(158, 528);
    path.cubicTo(158, 530.209106f, 159.790863f, 532, 162, 532);
    path.lineTo(275.009186f, 532);
    path.cubicTo(276.661774f, 531.994995f, 278, 530.653748f, 278, 529);
    path.lineTo(278, 471);
    path.cubicTo(278, 469.346375f, 276.662079f, 468.005249f, 275.009705f, 468);
    path.lineTo(162, 468);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(161, 469);
    pathB.lineTo(275, 469);
    pathB.cubicTo(276.65686f, 469, 278, 469.895416f, 278, 471);
    pathB.lineTo(278, 529);
    pathB.cubicTo(278, 530.65686f, 276.65686f, 532, 275, 532);
    pathB.lineTo(161, 532);
    pathB.cubicTo(159.34314f, 532, 158, 530.65686f, 158, 529);
    pathB.lineTo(158, 471);
    pathB.cubicTo(158, 469.895416f, 159.34314f, 469, 161, 469);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_meb_gov_tr_5(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(137.34314f, 145.34314f);
    path.quadTo(139.687088f, 143.000793f, 143, 143);
    path.lineTo(242, 143);
    path.quadTo(245.312912f, 143.000793f, 247.65686f, 145.34314f);
    path.quadTo(249.999207f, 147.687088f, 250, 151);
    path.lineTo(250, 177);
    path.lineTo(135, 177);
    path.lineTo(135, 151);
    path.quadTo(135.000793f, 147.687088f, 137.34314f, 145.34314f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(135, 143);
    pathB.lineTo(250, 143);
    pathB.lineTo(250, 177);
    pathB.lineTo(135, 177);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_meb_gov_tr_6(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(143, 143);
    path.quadTo(139.687088f, 143.000793f, 137.34314f, 145.34314f);
    path.quadTo(135.000793f, 147.687088f, 135, 151);
    path.lineTo(135, 177);
    path.lineTo(250, 177);
    path.lineTo(250, 151);
    path.quadTo(249.999207f, 147.687088f, 247.65686f, 145.34314f);
    path.quadTo(245.312912f, 143.000793f, 242, 143);
    path.lineTo(143, 143);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(143, 143);
    pathB.lineTo(242, 143);
    pathB.cubicTo(245.865997f, 143, 249, 146.581726f, 249, 151);
    pathB.lineTo(249, 177);
    pathB.lineTo(135, 177);
    pathB.lineTo(135, 151);
    pathB.cubicTo(135, 146.581726f, 138.581726f, 143, 143, 143);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpgithub_io_25(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1001.87866f, 14.8786793f);
    path.quadTo(1002.75745f, 14.0001001f, 1004, 14);
    path.lineTo(1105, 14);
    path.quadTo(1106.24255f, 14.0001001f, 1107.12134f, 14.8786793f);
    path.quadTo(1107.99988f, 15.7574596f, 1108, 17);
    path.lineTo(1108, 41);
    path.quadTo(1107.99988f, 42.2425423f, 1107.12134f, 43.1213188f);
    path.quadTo(1106.24255f, 43.9999008f, 1105, 44);
    path.lineTo(1004, 44);
    path.quadTo(1002.75745f, 43.9999008f, 1001.87866f, 43.1213188f);
    path.quadTo(1001.00012f, 42.2425423f, 1001, 41);
    path.lineTo(1001, 17);
    path.quadTo(1001.00012f, 15.7574596f, 1001.87866f, 14.8786793f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(1005, 16);
    pathB.lineTo(1104, 16);
    pathB.cubicTo(1105.10461f, 16, 1106, 16.8954296f, 1106, 18);
    pathB.lineTo(1106, 40);
    pathB.cubicTo(1106, 41.1045685f, 1105.10461f, 42, 1104, 42);
    pathB.lineTo(1005, 42);
    pathB.cubicTo(1003.89545f, 42, 1003, 41.1045685f, 1003, 40);
    pathB.lineTo(1003, 18);
    pathB.cubicTo(1003, 16.8954296f, 1003.89545f, 16, 1005, 16);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpgithub_io_26(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1001.87866f, 14.8786793f);
    path.quadTo(1002.75745f, 14.0001001f, 1004, 14);
    path.lineTo(1105, 14);
    path.quadTo(1106.24255f, 14.0001001f, 1107.12134f, 14.8786793f);
    path.quadTo(1107.99988f, 15.7574596f, 1108, 17);
    path.lineTo(1108, 41);
    path.quadTo(1107.99988f, 42.2425423f, 1107.12134f, 43.1213188f);
    path.quadTo(1106.24255f, 43.9999008f, 1105, 44);
    path.lineTo(1004, 44);
    path.quadTo(1002.75745f, 43.9999008f, 1001.87866f, 43.1213188f);
    path.quadTo(1001.00012f, 42.2425423f, 1001, 41);
    path.lineTo(1001, 17);
    path.quadTo(1001.00012f, 15.7574596f, 1001.87866f, 14.8786793f);
    path.close();
    path.moveTo(1003, 18);
    path.cubicTo(1003, 16.8954296f, 1003.89545f, 16, 1005, 16);
    path.lineTo(1104, 16);
    path.cubicTo(1105.10461f, 16, 1106, 16.8954296f, 1106, 18);
    path.lineTo(1106, 40);
    path.cubicTo(1106, 41.1045685f, 1105.10461f, 42, 1104, 42);
    path.lineTo(1005, 42);
    path.cubicTo(1003.89545f, 42, 1003, 41.1045685f, 1003, 40);
    path.lineTo(1003, 18);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(1108, 14);
    pathB.lineTo(1106, 16);
    pathB.lineTo(1105.97998f, 46.0200005f);
    pathB.lineTo(1108, 44);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpskpicture14(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(0, 994);
    path.lineTo(0, 0);
    path.lineTo(512, 0);
    path.lineTo(512, 994);
    path.lineTo(0, 994);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(-317, 168);
    pathB.quadTo(-317, 166.757385f, -316.121338f, 165.878662f);
    pathB.quadTo(-315.242645f, 165, -314, 165);
    pathB.lineTo(320, 165);
    pathB.quadTo(321.242615f, 165, 322.121338f, 165.878662f);
    pathB.quadTo(323, 166.757385f, 323, 168);
    pathB.lineTo(323, 193);
    pathB.lineTo(-317, 193);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpskpicture15(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(0, 193);
    path.lineTo(323, 193);
    path.lineTo(323, 168);
    path.quadTo(323, 166.757385f, 322.121338f, 165.878662f);
    path.quadTo(321.242615f, 165, 320, 165);
    path.lineTo(0, 165);
    path.lineTo(0, 193);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kInverseWinding);
    pathB.moveTo(-314, 165);
    pathB.lineTo(320, 165);
    pathB.cubicTo(321.65686f, 165, 323, 166.34314f, 323, 168);
    pathB.lineTo(323, 192);
    pathB.lineTo(-317, 192);
    pathB.lineTo(-317, 168);
    pathB.cubicTo(-317, 166.34314f, -315.65686f, 165, -314, 165);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpelpais_com_18(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(183, 8507);
    path.lineTo(552, 8506.99023f);
    path.lineTo(552, 8508);
    path.lineTo(183, 8508);
    path.lineTo(183, 8507);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(183, 8508);
    pathB.lineTo(183, 8506.99023f);
    pathB.lineTo(552, 8507);
    pathB.lineTo(552, 8508);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpnamecheap_com_405(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(140, 1000);
    path.lineTo(140, 842);
    path.lineTo(141, 842);
    path.lineTo(141.14502f, 1000);
    path.lineTo(140, 1000);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(140, 842);
    pathB.lineTo(141.008835f, 837.9646f);
    pathB.lineTo(141.235291f, 1109.05884f);
    pathB.lineTo(140, 1114);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_alrakoba_net_62(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(134.34314f, 9802.34277f);
    path.quadTo(132, 9804.68652f, 132, 9808);
    path.lineTo(132, 9822);
    path.quadTo(132, 9825.31348f, 134.34314f, 9827.65723f);
    path.quadTo(136.686295f, 9830, 140, 9830);
    path.lineTo(140.028473f, 9830);
    path.lineTo(139.877213f, 9828.90723f);
    path.quadTo(137.692032f, 9828.5332f, 136.050247f, 9826.65723f);
    path.quadTo(134, 9824.31348f, 134, 9821);
    path.lineTo(134, 9809);
    path.quadTo(134, 9806.10059f, 136.050247f, 9804.0498f);
    path.lineTo(134.34314f, 9802.34277f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(132, 9800);
    pathB.lineTo(135.962357f, 9800);
    pathB.lineTo(140, 9830);
    pathB.lineTo(132, 9830);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_cityads_ru_249(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(817.464478f, 11.4644661f);
    path.quadTo(818.928955f, 10, 821, 10);
    path.lineTo(998, 10);
    path.quadTo(999.082947f, 10, 1000, 10.4003992f);
    path.lineTo(1000, 13.3527431f);
    path.quadTo(999.917603f, 13.2607508f, 999.82843f, 13.1715727f);
    path.quadTo(998.65686f, 12, 997, 12);
    path.lineTo(822, 12);
    path.quadTo(820.34314f, 12, 819.17157f, 13.1715727f);
    path.quadTo(818, 14.3431454f, 818, 16);
    path.lineTo(818, 28);
    path.quadTo(818, 29.6568546f, 819.17157f, 30.8284264f);
    path.quadTo(820.34314f, 32, 822, 32);
    path.lineTo(997, 32);
    path.quadTo(998.65686f, 32, 999.82843f, 30.8284264f);
    path.quadTo(999.917603f, 30.7392426f, 1000, 30.6472569f);
    path.lineTo(1000, 33.5996017f);
    path.quadTo(999.082947f, 34, 998, 34);
    path.lineTo(821, 34);
    path.quadTo(818.928955f, 34, 817.464478f, 32.5355339f);
    path.quadTo(816, 31.0710678f, 816, 29);
    path.lineTo(816, 15);
    path.quadTo(816, 12.9289322f, 817.464478f, 11.4644661f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(1003, 10);
    pathB.lineTo(1000, 13);
    pathB.lineTo(999.969971f, 37.0299988f);
    pathB.lineTo(1003, 34);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_dealnews_com_315(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(966.464478f, 4261.46436f);
    path.quadTo(965, 4262.92871f, 965, 4265);
    path.lineTo(965, 4276);
    path.quadTo(965, 4278.07129f, 966.464478f, 4279.53564f);
    path.quadTo(967.928955f, 4281, 970, 4281);
    path.lineTo(970.020325f, 4281);
    path.lineTo(969.887512f, 4279.81641f);
    path.quadTo(968.928284f, 4279.48145f, 968.17157f, 4278.53564f);
    path.quadTo(967, 4277.07129f, 967, 4275);
    path.lineTo(967, 4266);
    path.quadTo(967, 4264.44287f, 968.035217f, 4263.31396f);
    path.lineTo(968, 4263);
    path.lineTo(966.464478f, 4261.46436f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(965, 4260);
    pathB.lineTo(967.716675f, 4260);
    pathB.lineTo(970, 4281);
    pathB.lineTo(965, 4281);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_inmotionhosting_com_9(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(991.633911f, 1839);
    path.lineTo(964.265015f, 1839);
    path.lineTo(963.734985f, 1893.73242f);
    path.lineTo(991.3703f, 1894);
    path.lineTo(1018.23492f, 1894);
    path.lineTo(1018.76501f, 1839.2627f);
    path.lineTo(991.638184f, 1839);
    path.lineTo(991.633911f, 1839);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(964.267578f, 1838.73499f);
    pathB.lineTo(1019.26501f, 1839.26758f);
    pathB.lineTo(1018.73242f, 1894.26501f);
    pathB.lineTo(963.734985f, 1893.73242f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_alucinados_net_101(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1129.53552f, 1164.46448f);
    path.lineTo(1128, 1166);
    path.lineTo(1128.12231f, 1166.49548f);
    path.quadTo(1129, 1167.56592f, 1129, 1169);
    path.lineTo(1129, 1170.05054f);
    path.lineTo(1130.34509f, 1175.49878f);
    path.quadTo(1131, 1174.38513f, 1131, 1173);
    path.lineTo(1131, 1168);
    path.quadTo(1131, 1165.92896f, 1129.53552f, 1164.46448f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(1131, 1163);
    pathB.lineTo(-43515.8555f, -177415.594f);
    pathB.lineTo(1129.76465f, 1173.05884f);
    pathB.lineTo(1131, 1178);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_hairjobsearch_com_31(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(143.292892f, 0.707106769f);
    path.quadTo(143, 0.414213538f, 143, 0);
    path.lineTo(1123, 0);
    path.quadTo(1123, 0.414213538f, 1122.70715f, 0.707106769f);
    path.quadTo(1122.41418f, 1, 1122, 1);
    path.lineTo(144, 1);
    path.quadTo(143.585785f, 1, 143.292892f, 0.707106769f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(143, 1);
    pathB.lineTo(144, 0);
    pathB.lineTo(1122, 0);
    pathB.lineTo(1123, 1);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_heartiste_wordpress_com_86(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(741, 9432);
    path.lineTo(761, 9431.99023f);
    path.lineTo(761, 9433);
    path.lineTo(741, 9433);
    path.lineTo(741, 9432);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(741, 9433);
    pathB.lineTo(741, 9431.99023f);
    pathB.lineTo(761, 9432);
    pathB.lineTo(761, 9433);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_argus_presse_fr_41(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1000, 343);
    path.lineTo(165, 343);
    path.lineTo(165, 364.869873f);
    path.lineTo(1000, 364.869873f);
    path.lineTo(1000, 343);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(165, 343.000031f);
    pathB.lineTo(1000, 343.000031f);
    pathB.lineTo(1000, 364.869904f);
    pathB.lineTo(165, 364.869904f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_320kbps_net_2231(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(838, 9125);
    path.lineTo(862, 9124.99023f);
    path.lineTo(862, 9126);
    path.lineTo(838, 9126);
    path.lineTo(838, 9125);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(838, 9126);
    pathB.lineTo(838, 9124.99023f);
    pathB.lineTo(862, 9125);
    pathB.lineTo(862, 9126);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_exystence_net_61(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(143, 9075);
    path.lineTo(316, 9075);
    path.lineTo(316, 9073.99023f);
    path.lineTo(143, 9074);
    path.lineTo(143, 9075);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(143, 9075);
    pathB.lineTo(143, 9073.99023f);
    pathB.lineTo(316, 9074);
    pathB.lineTo(316, 9075);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_trashness_com_36(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(541.5f, 4835.99512f);
    path.lineTo(91.5f, 4836);
    path.lineTo(91.5f, 4836.5f);
    path.lineTo(541.5f, 4836.5f);
    path.lineTo(541.5f, 4835.99512f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(91.5f, 4836.5f);
    pathB.lineTo(91.5f, 4835.99512f);
    pathB.lineTo(541.5f, 4836);
    pathB.lineTo(541.5f, 4836.5f);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_getgold_jp_731(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(284.878693f, 10134.8789f);
    path.quadTo(284, 10135.7578f, 284, 10137);
    path.lineTo(284, 10216);
    path.quadTo(284, 10217.2422f, 284.878693f, 10218.1211f);
    path.quadTo(285.125122f, 10218.3672f, 285.40213f, 10218.5459f);
    path.lineTo(286, 10138);
    path.lineTo(286, 10136);
    path.lineTo(284.878693f, 10134.8789f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(284, 10134);
    pathB.lineTo(286.05957f, 10129.8809f);
    pathB.lineTo(285.399994f, 10216.2002f);
    pathB.lineTo(284, 10219);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_maturesupertube_com_21(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(3.17157292f, 11831.1719f);
    path.quadTo(4.34314585f, 11830, 6, 11830);
    path.lineTo(1259, 11830);
    path.quadTo(1260.65686f, 11830, 1261.82837f, 11831.1719f);
    path.quadTo(1263, 11832.3428f, 1263, 11834);
    path.lineTo(1263, 11848);
    path.quadTo(1263, 11849.6572f, 1261.82837f, 11850.8281f);
    path.quadTo(1260.65686f, 11852, 1259, 11852);
    path.lineTo(6, 11852);
    path.quadTo(4.34314585f, 11852, 3.17157292f, 11850.8281f);
    path.quadTo(2, 11849.6572f, 2, 11848);
    path.lineTo(2, 11834);
    path.quadTo(2, 11832.3428f, 3.17157292f, 11831.1719f);
    path.close();
    path.moveTo(3.87867975f, 11831.8789f);
    path.quadTo(4.7573595f, 11831, 6, 11831);
    path.lineTo(1259, 11831);
    path.quadTo(1260.24268f, 11831, 1261.12134f, 11831.8789f);
    path.quadTo(1262, 11832.7578f, 1262, 11834);
    path.lineTo(1262, 11848);
    path.quadTo(1262, 11849.2422f, 1261.12134f, 11850.1211f);
    path.quadTo(1260.24268f, 11851, 1259, 11851);
    path.lineTo(6, 11851);
    path.quadTo(4.7573595f, 11851, 3.87867975f, 11850.1211f);
    path.quadTo(3, 11849.2422f, 3, 11848);
    path.lineTo(3, 11834);
    path.quadTo(3, 11832.7578f, 3.87867975f, 11831.8789f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(2, 11830);
    pathB.lineTo(4.5f, 11832.5f);
    pathB.lineTo(1260.5f, 11832.5f);
    pathB.lineTo(1263, 11830);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_hubbyscook_com_22(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1000, 902.329346f);
    path.quadTo(998, 905.250427f, 998, 909);
    path.lineTo(998, 910);
    path.quadTo(998, 913.749573f, 1000, 916.670654f);
    path.lineTo(1000, 902.329346f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(998, 910);
    pathB.lineTo(998, 909);
    pathB.quadTo(998, 904.029419f, 1001.51471f, 900.514709f);
    pathB.quadTo(1005.02942f, 897, 1010, 897);
    pathB.lineTo(1011, 897);
    pathB.quadTo(1015.14215f, 897, 1018.07104f, 900.514709f);
    pathB.quadTo(1021, 904.029419f, 1021, 909);
    pathB.lineTo(1021, 910);
    pathB.quadTo(1021, 914.142151f, 1018.07104f, 917.071045f);
    pathB.quadTo(1015.14215f, 920, 1011, 920);
    pathB.lineTo(1010, 920);
    pathB.quadTo(1005.02942f, 920, 1001.51471f, 917.071045f);
    pathB.quadTo(998, 914.142151f, 998, 910);
    pathB.close();
    testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
}

static void skpwww_gruposejaumdivulgador_com_br_4(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(610.5f, 5.78626502e-14f);
    path.lineTo(1083.5f, -6.12303177e-17f);
    path.lineTo(1083.5f, 469);
    path.lineTo(610.5f, 469);
    path.lineTo(610.5f, 5.78626502e-14f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(611, 0);
    pathB.lineTo(1084, 0);
    pathB.lineTo(1084, 469);
    pathB.lineTo(611, 469);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_phototransferapp_com_24(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(85.6091843f, 5.92893219f);
    path.quadTo(89.6041641f, 3, 93.7462997f, 3);
    path.lineTo(1212.74634f, 3);
    path.quadTo(1216.88843f, 3, 1218.75134f, 5.92893219f);
    path.quadTo(1220.61414f, 8.85775471f, 1219.10669f, 12.9996767f);
    path.quadTo(1220.46338f, 9.27196693f, 1218.4939f, 6.63603878f);
    path.quadTo(1216.52441f, 4, 1212.38232f, 4);
    path.lineTo(93.3823318f, 4);
    path.quadTo(89.2401962f, 4, 85.3518219f, 6.63603878f);
    path.quadTo(81.4634476f, 9.27207756f, 80.1065979f, 13);
    path.quadTo(81.614212f, 8.85786438f, 85.6091843f, 5.92893219f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(83.7462997f, 3);
    pathB.lineTo(1222.74634f, 3);
    pathB.lineTo(1219.10657f, 13);
    pathB.lineTo(80.1065979f, 13);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_phototransferapp_com_24x(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(85.6091843f, 5.92893219f);
    path.quadTo(89.6041641f, 3, 93.7462997f, 3);
    path.lineTo(112.74634f, 3);
    path.quadTo(116.88843f, 3, 118.75134f, 5.92893219f);
    path.quadTo(120.61414f, 8.85775471f, 119.10669f, 12.9996767f);
    path.quadTo(120.46338f, 9.27196693f, 118.4939f, 6.63603878f);
    path.quadTo(116.52441f, 4, 112.38232f, 4);
    path.lineTo(93.3823318f, 4);
    path.quadTo(89.2401962f, 4, 85.3518219f, 6.63603878f);
    path.quadTo(81.4634476f, 9.27207756f, 80.1065979f, 13);
    path.quadTo(81.614212f, 8.85786438f, 85.6091843f, 5.92893219f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(83.7462997f, 3);
    pathB.lineTo(122.74634f, 3);
    pathB.lineTo(119.10657f, 13);
    pathB.lineTo(80.1065979f, 13);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_helha_be_109(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(117.686981f, 3339.08423f);
    path.lineTo(109.533035f, 3350.72925f);
    path.quadTo(107.120552f, 3354.17456f, 103.879379f, 3354.41821f);
    path.quadTo(100.638504f, 3354.66187f, 98.4674301f, 3351.56177f);
    path.quadTo(100.87973f, 3355.00635f, 104.291222f, 3355.00635f);
    path.quadTo(107.70298f, 3355.00635f, 110.115463f, 3351.56104f);
    path.lineTo(118, 3340.30078f);
    path.lineTo(118, 3339.53125f);
    path.lineTo(117.686981f, 3339.08423f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(118.269409f, 3339.91602f);
    pathB.lineTo(117.686981f, 3339.08423f);
    pathB.lineTo(98.4669647f, 3351.56104f);
    pathB.lineTo(104.291214f, 3359.87891f);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_cooksnaps_com_32(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(509.34021f, 176);
    path.lineTo(505, 176);
    path.quadTo(500.964233f, 176, 497.299988f, 176.896912f);
    path.quadTo(493.678162f, 177.952286f, 490.183014f, 179.9702f);
    path.lineTo(489.316986f, 180.4702f);
    path.quadTo(485.175385f, 182.861359f, 482.115265f, 186.082397f);
    path.quadTo(479.69455f, 188.700821f, 477.995941f, 191.618286f);
    path.quadTo(476.316772f, 194.550476f, 475.258759f, 197.959335f);
    path.quadTo(474, 202.218979f, 474, 207);
    path.lineTo(474, 208);
    path.quadTo(474, 212.03569f, 474.896851f, 215.699799f);
    path.quadTo(475.950256f, 219.315002f, 477.962708f, 222.803986f);
    path.lineTo(477.970215f, 222.816986f);
    path.lineTo(478.470215f, 223.683014f);
    path.quadTo(478.474915f, 223.691162f, 478.479645f, 223.69931f);
    path.quadTo(480.867981f, 227.831055f, 484.082947f, 230.885254f);
    path.quadTo(486.701447f, 233.305939f, 489.61908f, 235.004517f);
    path.quadTo(492.550232f, 236.682983f, 495.957611f, 237.740738f);
    path.quadTo(500.217987f, 239, 505, 239);
    path.lineTo(509.482178f, 239);
    path.quadTo(515.299133f, 238.212051f, 520.801941f, 235.038513f);
    path.quadTo(520.809509f, 235.034164f, 520.817017f, 235.0298f);
    path.lineTo(521.683044f, 234.5298f);
    path.quadTo(521.692078f, 234.524582f, 521.701111f, 234.519348f);
    path.quadTo(532.80603f, 228.09938f, 536.126709f, 215.70639f);
    path.quadTo(539.450134f, 203.303314f, 533.029785f, 192.183014f);
    path.lineTo(532.529785f, 191.316986f);
    path.quadTo(526.109497f, 180.196686f, 513.706421f, 176.873276f);
    path.quadTo(511.503082f, 176.282898f, 509.34021f, 176);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(478.470215f, 223.683014f);
    pathB.lineTo(477.970215f, 222.816986f);
    pathB.quadTo(471.549896f, 211.696686f, 474.873322f, 199.293594f);
    pathB.quadTo(478.196686f, 186.890503f, 489.316986f, 180.4702f);
    pathB.lineTo(490.183014f, 179.9702f);
    pathB.quadTo(501.303345f, 173.549896f, 513.706421f, 176.873276f);
    pathB.quadTo(526.109497f, 180.196686f, 532.529785f, 191.316986f);
    pathB.lineTo(533.029785f, 192.183014f);
    pathB.quadTo(539.450134f, 203.303314f, 536.126709f, 215.70639f);
    pathB.quadTo(532.803345f, 228.109497f, 521.683044f, 234.5298f);
    pathB.lineTo(520.817017f, 235.0298f);
    pathB.quadTo(509.696686f, 241.450104f, 497.29361f, 238.126709f);
    pathB.quadTo(484.890533f, 234.803314f, 478.470215f, 223.683014f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_cooksnaps_com_32a(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(497.299988f, 176.896912f);
    path.quadTo(493.678162f, 177.952286f, 490.183014f, 179.9702f);
    path.lineTo(489.316986f, 180.4702f);
    path.quadTo(485.175385f, 182.861359f, 482.115265f, 186.082397f);
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(474.873322f, 199.293594f);
    pathB.quadTo(478.196686f, 186.890503f, 489.316986f, 180.4702f);
    pathB.lineTo(490.183014f, 179.9702f);
    pathB.quadTo(501.303345f, 173.549896f, 513.706421f, 176.873276f);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_contextualnewsfeeds_com_346(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(460.257355f, 1202.27808f);
    path.lineTo(460.257355f, 1204.27808f);
    path.quadTo(461.081207f, 1204.27808f, 461.665161f, 1203.69873f);
    path.lineTo(461.67157f, 1203.69238f);
    path.lineTo(466.621307f, 1198.74268f);
    path.quadTo(466.623993f, 1198.73999f, 466.626648f, 1198.7373f);
    path.quadTo(466.914185f, 1198.44604f, 466.914185f, 1198.03552f);
    path.quadTo(466.914215f, 1197.62122f, 466.621307f, 1197.32837f);
    path.lineTo(465.914215f, 1196.62122f);
    path.lineTo(460.257355f, 1202.27808f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(460.257355f, 1205.10657f);
    pathB.lineTo(458.828979f, 1203.67822f);
    pathB.lineTo(465.914215f, 1196.62122f);
    pathB.lineTo(467.32843f, 1198.03552f);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_pindosiya_com_99(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(899.17157f, 548.17157f);
    path.quadTo(898, 549.34314f, 898, 551);
    path.lineTo(898, 556);
    path.lineTo(899.027283f, 556);
    path.lineTo(900.02356f, 551.602844f);
    path.quadTo(900.06073f, 551.297058f, 900.156555f, 551.015747f);
    path.lineTo(900.5f, 549.5f);
    path.lineTo(899.17157f, 548.17157f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(898, 547);
    pathB.lineTo(901.086914f, 547);
    pathB.lineTo(899, 556);
    pathB.lineTo(898, 556);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_karnivool_com_au_11(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(0, 1431);
    path.lineTo(0, 775);
    path.lineTo(1265, 775);
    path.lineTo(1265, 1431);
    path.lineTo(0, 1431);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(32.3243904f, 851);
    pathB.lineTo(459.324402f, 851);
    pathB.lineTo(427, 1081);
    pathB.lineTo(-3.81469727e-06f, 1081);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_tunero_de_24(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1020.79303f, 2252);
    path.quadTo(1018.72198f, 2252, 1016.86798f, 2253.46436f);
    path.quadTo(1015.02032f, 2254.92383f, 1014.4668f, 2256.98584f);
    path.lineTo(1014.46301f, 2257);
    path.lineTo(1011.53705f, 2268);
    path.quadTo(1010.98615f, 2270.07104f, 1012.06104f, 2271.53564f);
    path.quadTo(1013.13599f, 2273, 1015.20703f, 2273);
    path.lineTo(1083.20703f, 2273);
    path.quadTo(1085.27808f, 2273, 1087.13208f, 2271.53564f);
    path.quadTo(1088.97144f, 2270.08252f, 1089.52832f, 2268.03271f);
    path.lineTo(1089.53711f, 2268);
    path.lineTo(1092.46301f, 2257);
    path.lineTo(1092.4679f, 2256.98145f);
    path.quadTo(1093.00916f, 2254.92236f, 1091.93909f, 2253.46436f);
    path.quadTo(1090.86414f, 2252, 1088.79297f, 2252);
    path.lineTo(1020.79303f, 2252);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(1011.53705f, 2268);
    pathB.lineTo(1014.46301f, 2257);
    pathB.quadTo(1015.01392f, 2254.92896f, 1016.86798f, 2253.46436f);
    pathB.quadTo(1018.72198f, 2252, 1020.79303f, 2252);
    pathB.lineTo(1088.79297f, 2252);
    pathB.quadTo(1090.86414f, 2252, 1091.93909f, 2253.46436f);
    pathB.quadTo(1093.01392f, 2254.92896f, 1092.46301f, 2257);
    pathB.lineTo(1089.53711f, 2268);
    pathB.quadTo(1088.98608f, 2270.07104f, 1087.13208f, 2271.53564f);
    pathB.quadTo(1085.27808f, 2273, 1083.20703f, 2273);
    pathB.lineTo(1015.20703f, 2273);
    pathB.quadTo(1013.13599f, 2273, 1012.06104f, 2271.53564f);
    pathB.quadTo(1010.98615f, 2270.07104f, 1011.53705f, 2268);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_docgelo_com_66(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(22.5f, 24174.5f);
    path.lineTo(185.5f, 24174.498f);
    path.lineTo(185.5f, 24174.75f);
    path.lineTo(22.5f, 24174.75f);
    path.lineTo(22.5f, 24174.5f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(22.5f, 24174.75f);
    pathB.lineTo(22.5f, 24174.498f);
    pathB.lineTo(185.5f, 24174.5f);
    pathB.lineTo(185.5f, 24174.75f);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_kpopexplorer_net_22(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1000, 866.329346f);
    path.quadTo(998, 869.250427f, 998, 873);
    path.lineTo(998, 874);
    path.quadTo(998, 877.749573f, 1000, 880.670654f);
    path.lineTo(1000, 866.329346f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(998, 874);
    pathB.lineTo(998, 873);
    pathB.quadTo(998, 868.029419f, 1001.51471f, 864.514709f);
    pathB.quadTo(1005.02942f, 861, 1010, 861);
    pathB.lineTo(1011, 861);
    pathB.quadTo(1015.14215f, 861, 1018.07104f, 864.514709f);
    pathB.quadTo(1021, 868.029419f, 1021, 873);
    pathB.lineTo(1021, 874);
    pathB.quadTo(1021, 878.142151f, 1018.07104f, 881.071045f);
    pathB.quadTo(1015.14215f, 884, 1011, 884);
    pathB.lineTo(1010, 884);
    pathB.quadTo(1005.02942f, 884, 1001.51471f, 881.071045f);
    pathB.quadTo(998, 878.142151f, 998, 874);
    pathB.close();
    testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
}

static void skpwww_artblart_com_8(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(22.5f, 24527.25f);
    path.lineTo(45, 24527.248f);
    path.lineTo(45, 24527.5f);
    path.lineTo(22.5f, 24527.5f);
    path.lineTo(22.5f, 24527.25f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(22.5f, 24527.5f);
    pathB.lineTo(22.5f, 24527.248f);
    pathB.lineTo(45, 24527.25f);
    pathB.lineTo(45, 24527.5f);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_jessicaslens_wordpress_com_222(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1000, 844.329346f);
    path.quadTo(998, 847.250427f, 998, 851);
    path.lineTo(998, 852);
    path.quadTo(998, 855.749573f, 1000, 858.670654f);
    path.lineTo(1000, 844.329346f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(998, 852);
    pathB.lineTo(998, 851);
    pathB.quadTo(998, 846.029419f, 1001.51471f, 842.514709f);
    pathB.quadTo(1005.02942f, 839, 1010, 839);
    pathB.lineTo(1011, 839);
    pathB.quadTo(1015.14215f, 839, 1018.07104f, 842.514709f);
    pathB.quadTo(1021, 846.029419f, 1021, 851);
    pathB.lineTo(1021, 852);
    pathB.quadTo(1021, 856.142151f, 1018.07104f, 859.071045f);
    pathB.quadTo(1015.14215f, 862, 1011, 862);
    pathB.lineTo(1010, 862);
    pathB.quadTo(1005.02942f, 862, 1001.51471f, 859.071045f);
    pathB.quadTo(998, 856.142151f, 998, 852);
    pathB.close();
    testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
}

static void skpwww_simplysaru_com_40(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1000, 866.329346f);
    path.quadTo(998, 869.250427f, 998, 873);
    path.lineTo(998, 874);
    path.quadTo(998, 877.749573f, 1000, 880.670654f);
    path.lineTo(1000, 866.329346f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(998, 874);
    pathB.lineTo(998, 873);
    pathB.quadTo(998, 868.029419f, 1001.51471f, 864.514709f);
    pathB.quadTo(1005.02942f, 861, 1010, 861);
    pathB.lineTo(1011, 861);
    pathB.quadTo(1015.14215f, 861, 1018.07104f, 864.514709f);
    pathB.quadTo(1021, 868.029419f, 1021, 873);
    pathB.lineTo(1021, 874);
    pathB.quadTo(1021, 878.142151f, 1018.07104f, 881.071045f);
    pathB.quadTo(1015.14215f, 884, 1011, 884);
    pathB.lineTo(1010, 884);
    pathB.quadTo(1005.02942f, 884, 1001.51471f, 881.071045f);
    pathB.quadTo(998, 878.142151f, 998, 874);
    pathB.close();
    testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
}

static void skpwww_partsdata_de_53(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(407, 119);
    path.lineTo(407, 28);
    path.lineTo(647, 28);
    path.lineTo(647, 119);
    path.lineTo(407, 119);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(471.228394f, 64.443222f);
    pathB.cubicTo(471.193878f, 60.953373f, 470.234985f, 52.4797592f, 462.201569f, 46.6231461f);
    pathB.cubicTo(454.168152f, 40.7665405f, 446.592804f, 41.993145f, 443.033936f, 42.8568878f);
    pathB.cubicTo(439.475098f, 43.7206268f, 436.978638f, 45.4052658f, 436.304871f, 45.7851906f);
    pathB.cubicTo(435.631104f, 46.1651154f, 435.156006f, 45.8026352f, 434.957306f, 45.6384506f);
    pathB.cubicTo(434.758636f, 45.4742737f, 431.460999f, 42.0105858f, 430.916901f, 41.4664841f);
    pathB.cubicTo(430.372803f, 40.9223785f, 429.731628f, 41.3303604f, 429.375214f, 41.6996689f);
    pathB.cubicTo(429.375214f, 41.6996689f, 420.610016f, 50.5190887f, 419.918793f, 51.1754227f);
    pathB.cubicTo(419.22757f, 51.8321419f, 419.331482f, 52.2465706f, 419.884308f, 52.8339005f);
    pathB.cubicTo(420.437134f, 53.4212303f, 425.170624f, 58.0167313f, 425.619568f, 58.4660416f);
    pathB.cubicTo(426.068512f, 58.9153557f, 426.137878f, 59.2952805f, 426.137878f, 59.8136024f);
    pathB.cubicTo(426.137878f, 60.3319244f, 426.103394f, 103.141357f, 426.103394f, 103.970215f);
    pathB.cubicTo(426.103394f, 104.799835f, 426.310791f, 105.525177f, 427.17453f, 105.525177f);
    pathB.cubicTo(428.038269f, 105.525177f, 440.131409f, 105.491432f, 440.85675f, 105.491432f);
    pathB.cubicTo(441.582489f, 105.491432f, 441.996918f, 104.903343f, 441.996918f, 104.17762f);
    pathB.cubicTo(441.996918f, 103.452271f, 441.996918f, 89.5622559f, 441.996918f, 87.8002701f);
    pathB.cubicTo(441.996918f, 86.0382843f, 442.342712f, 86.2453079f, 442.826141f, 86.3491974f);
    pathB.cubicTo(443.309601f, 86.4530945f, 445.832184f, 87.040802f, 448.700195f, 87.040802f);
    pathB.cubicTo(466.87442f, 86.6949997f, 471.815338f, 69.4876556f, 471.228394f, 64.443222f);
    pathB.close();
    pathB.moveTo(448.873108f, 72.4595642f);
    pathB.cubicTo(444.636658f, 72.4595642f, 441.202545f, 69.0254517f, 441.202545f, 64.7890244f);
    pathB.cubicTo(441.202545f, 60.5525932f, 444.636658f, 57.1184845f, 448.873108f, 57.1184845f);
    pathB.cubicTo(453.109528f, 57.1184845f, 456.54364f, 60.552597f, 456.54364f, 64.7890244f);
    pathB.cubicTo(456.54364f, 69.0254517f, 453.109528f, 72.4595642f, 448.873108f, 72.4595642f);
    pathB.close();
    pathB.moveTo(520.242859f, 82.5275803f);
    pathB.cubicTo(519.733276f, 81.6547394f, 494.845154f, 41.3379478f, 494.263123f, 40.3923073f);
    pathB.cubicTo(493.681122f, 39.4462852f, 493.244324f, 39.5918846f, 492.807495f, 40.3195038f);
    pathB.cubicTo(492.515167f, 40.8071136f, 467.238037f, 81.6790085f, 466.528625f, 82.8373566f);
    pathB.cubicTo(465.819183f, 83.9945831f, 466.497528f, 84.2975311f, 466.904358f, 84.5792542f);
    pathB.cubicTo(466.904358f, 84.5792542f, 477.399689f, 91.2036743f, 478.235748f, 91.6981049f);
    pathB.cubicTo(479.071838f, 92.1929092f, 479.396393f, 91.9028473f, 479.669403f, 91.5104141f);
    pathB.cubicTo(479.942383f, 91.1175995f, 484.106384f, 84.1549606f, 484.481781f, 83.5570221f);
    pathB.cubicTo(484.857147f, 82.9602051f, 485.198792f, 82.8741379f, 485.966583f, 82.8741379f);
    pathB.cubicTo(486.734406f, 82.8741379f, 499.635925f, 82.8062668f, 500.830322f, 82.8062668f);
    pathB.cubicTo(502.024658f, 82.8062668f, 502.229797f, 83.4038391f, 502.400452f, 83.6427078f);
    pathB.cubicTo(502.571045f, 83.8815842f, 506.615631f, 90.7414703f, 506.990997f, 91.2870865f);
    pathB.cubicTo(507.651123f, 92.2475128f, 508.017395f, 92.1333847f, 508.672241f, 91.6962051f);
    pathB.cubicTo(509.327423f, 91.2597809f, 519.442444f, 85.0744324f, 520.243286f, 84.4920349f);
    pathB.cubicTo(521.042908f, 83.9100189f, 520.751709f, 83.4004211f, 520.242859f, 82.5275803f);
    pathB.close();
    pathB.moveTo(493.720551f, 72.4811783f);
    pathB.cubicTo(491.265442f, 72.4811783f, 489.275574f, 70.4905548f, 489.275574f, 68.0362091f);
    pathB.cubicTo(489.275574f, 65.5811005f, 491.265808f, 63.5912399f, 493.720551f, 63.5912399f);
    pathB.cubicTo(496.175262f, 63.5912399f, 498.165527f, 65.5814819f, 498.165527f, 68.0362091f);
    pathB.cubicTo(498.165894f, 70.4905548f, 496.175659f, 72.4811783f, 493.720551f, 72.4811783f);
    pathB.close();
    pathB.moveTo(526.561707f, 42.132679f);
    pathB.cubicTo(526.876404f, 41.786499f, 527.537292f, 41.1881752f, 528.512878f, 42.1956215f);
    pathB.cubicTo(529.488892f, 43.2030678f, 531.691833f, 45.2486725f, 531.881042f, 45.4693451f);
    pathB.cubicTo(532.07019f, 45.6896439f, 532.762939f, 46.2875862f, 533.517883f, 45.7525826f);
    pathB.cubicTo(534.272827f, 45.2172012f, 539.497681f, 41.9753265f, 545.384277f, 42.132679f);
    pathB.cubicTo(546.203247f, 42.2270889f, 546.580566f, 42.5421791f, 546.612f, 43.8324814f);
    pathB.cubicTo(546.643494f, 45.1227837f, 546.674561f, 55.1957283f, 546.612f, 56.2657356f);
    pathB.cubicTo(546.549072f, 57.3361206f, 546.549072f, 57.7452469f, 544.975525f, 57.8396568f);
    pathB.cubicTo(543.401978f, 57.9340706f, 538.742798f, 59.5709305f, 538.774658f, 64.6070251f);
    pathB.cubicTo(538.806458f, 69.6431122f, 538.806091f, 86.2631226f, 538.806091f, 86.9554901f);
    pathB.cubicTo(538.806091f, 87.6478424f, 538.585815f, 88.4349976f, 537.484314f, 88.4349976f);
    pathB.cubicTo(536.382446f, 88.4349976f, 524.79895f, 88.4031372f, 524.04364f, 88.4031372f);
    pathB.cubicTo(523.287964f, 88.4031372f, 522.910706f, 88.3402023f, 522.910706f, 86.8606949f);
    pathB.cubicTo(522.910706f, 85.3823242f, 522.910706f, 60.6094704f, 522.910706f, 60.0740852f);
    pathB.cubicTo(522.910706f, 59.5387039f, 522.81665f, 58.9092865f, 522.470093f, 58.6260452f);
    pathB.cubicTo(522.123901f, 58.3428116f, 517.465088f, 53.621048f, 517.181885f, 53.3378105f);
    pathB.cubicTo(516.898621f, 53.0545731f, 516.300659f, 52.330368f, 517.213318f, 51.5121231f);
    pathB.cubicTo(518.125977f, 50.6942635f, 526.561707f, 42.132679f, 526.561707f, 42.132679f);
    pathB.close();
    pathB.moveTo(550.169006f, 43.7373123f);
    pathB.cubicTo(550.169006f, 42.6358337f, 550.767334f, 42.2263336f, 551.49115f, 42.2263336f);
    pathB.cubicTo(552.214966f, 42.2263336f, 552.781433f, 42.2263336f, 552.938843f, 42.2263336f);
    pathB.cubicTo(553.096191f, 42.2263336f, 553.725586f, 41.8801537f, 553.662598f, 41.124855f);
    pathB.cubicTo(553.600098f, 40.369175f, 553.662598f, 31.4614124f, 553.662598f, 30.8005257f);
    pathB.cubicTo(553.662598f, 30.1396389f, 553.75708f, 29.1951332f, 555.110657f, 29.1951332f);
    pathB.cubicTo(556.463928f, 29.1951332f, 566.536865f, 29.1951332f, 567.859009f, 29.1951332f);
    pathB.cubicTo(569.180786f, 29.1951332f, 569.463623f, 30.1711082f, 569.463623f, 30.7690544f);
    pathB.cubicTo(569.463623f, 31.3670006f, 569.463623f, 40.2122002f, 569.463623f, 41.0619125f);
    pathB.cubicTo(569.463623f, 41.9116249f, 569.746887f, 42.3207474f, 570.659912f, 42.3207474f);
    pathB.cubicTo(571.572571f, 42.3207474f, 575.507568f, 42.2263336f, 576.199951f, 42.2263336f);
    pathB.cubicTo(576.892273f, 42.2263336f, 577.742004f, 42.5725098f, 577.742004f, 43.8631973f);
    pathB.cubicTo(577.742004f, 45.1538811f, 577.742004f, 55.8877106f, 577.742004f, 56.5800705f);
    pathB.cubicTo(577.742004f, 57.2724266f, 577.616455f, 58.0595779f, 576.45166f, 58.0595779f);
    pathB.cubicTo(575.286865f, 58.0595779f, 570.943115f, 58.0595779f, 570.471069f, 58.0595779f);
    pathB.cubicTo(569.999023f, 58.0595779f, 569.479919f, 57.8389015f, 569.479919f, 59.0510979f);
    pathB.cubicTo(569.479919f, 60.2629128f, 569.479919f, 66.2124176f, 569.479919f, 67.1880188f);
    pathB.cubicTo(569.479919f, 68.1636047f, 570.628418f, 73.6406708f, 575.917053f, 73.6406708f);
    pathB.cubicTo(577.018921f, 73.6406708f, 577.742737f, 73.9242859f, 577.742737f, 75.4348907f);
    pathB.cubicTo(577.742737f, 76.945488f, 577.742737f, 87.0813751f, 577.742737f, 87.8366699f);
    pathB.cubicTo(577.742737f, 88.5915909f, 577.648315f, 89.4416809f, 576.295044f, 89.4416809f);
    pathB.cubicTo(574.028809f, 89.6312714f, 553.978088f, 88.0254974f, 553.631897f, 65.928421f);
    pathB.cubicTo(553.631897f, 65.928421f, 553.631897f, 59.6964378f, 553.631897f, 58.972229f);
    pathB.cubicTo(553.631897f, 58.2484055f, 553.034363f, 58.0436554f, 552.703735f, 58.0436554f);
    pathB.cubicTo(552.372681f, 58.0436554f, 551.522949f, 58.0436554f, 551.208252f, 58.0436554f);
    pathB.cubicTo(550.893921f, 58.0436554f, 550.170105f, 58.0906677f, 550.170105f, 56.6115417f);
    pathB.cubicTo(550.170105f, 55.1324081f, 550.169006f, 43.7373123f, 550.169006f, 43.7373123f);
    pathB.close();
    pathB.moveTo(611.203857f, 39.5509338f);
    pathB.cubicTo(612.084961f, 39.5509338f, 612.620422f, 40.0544662f, 612.620422f, 40.8097687f);
    pathB.cubicTo(612.620422f, 41.5650673f, 612.620422f, 53.1486092f, 612.620422f, 53.6839905f);
    pathB.cubicTo(612.620422f, 54.2193718f, 612.651489f, 55.2264404f, 611.612976f, 55.2264404f);
    pathB.cubicTo(610.574463f, 55.2264404f, 604.404663f, 55.9817429f, 604.404663f, 61.899395f);
    pathB.cubicTo(604.404663f, 65.4878235f, 604.373169f, 66.6211548f, 604.373169f, 67.5338135f);
    pathB.cubicTo(604.373169f, 68.0684357f, 604.414124f, 74.3353043f, 599.934631f, 80.4702148f);
    pathB.cubicTo(596.765564f, 84.8109131f, 590.664368f, 89.3942871f, 582.150208f, 89.630127f);
    pathB.cubicTo(580.028015f, 89.630127f, 580.230469f, 88.5286484f, 580.230469f, 88.1820908f);
    pathB.cubicTo(580.230469f, 87.5845184f, 580.198975f, 75.8436279f, 580.198975f, 75.2142105f);
    pathB.cubicTo(580.198975f, 74.5844116f, 580.608154f, 73.8605804f, 581.58374f, 73.8605804f);
    pathB.cubicTo(583.40979f, 73.8605804f, 588.603271f, 72.7905731f, 588.603271f, 66.9043884f);
    pathB.cubicTo(588.603271f, 61.3958588f, 588.603271f, 61.8679237f, 588.603271f, 61.0496788f);
    pathB.cubicTo(588.603271f, 60.2314377f, 588.666565f, 54.3137856f, 593.230591f, 48.3961296f);
    pathB.cubicTo(597.794617f, 42.4784775f, 604.814087f, 39.5509338f, 611.203857f, 39.5509338f);
    pathB.close();
    pathB.moveTo(635.22937f, 81.9311447f);
    pathB.cubicTo(635.057617f, 81.6475296f, 634.869141f, 81.3851471f, 634.664429f, 81.1439972f);
    pathB.lineTo(635.039001f, 81.0385895f);
    pathB.cubicTo(635.447754f, 80.9233246f, 635.729858f, 80.5509796f, 635.729858f, 80.1263123f);
    pathB.lineTo(635.729858f, 78.6149597f);
    pathB.cubicTo(635.729858f, 78.3309631f, 635.602417f, 78.0617523f, 635.382935f, 77.8816452f);
    pathB.cubicTo(635.162598f, 77.7015381f, 634.873291f, 77.6295013f, 634.595764f, 77.6852341f);
    pathB.cubicTo(633.906799f, 77.8232498f, 633.194397f, 77.9017334f, 632.478149f, 77.9191818f);
    pathB.cubicTo(631.714844f, 77.9373779f, 630.851501f, 77.9464874f, 629.911133f, 77.9464874f);
    pathB.lineTo(615.131226f, 77.9464874f);
    pathB.cubicTo(614.607605f, 77.9464874f, 614.18335f, 78.3707733f, 614.18335f, 78.8944016f);
    pathB.lineTo(614.18335f, 81.1337585f);
    pathB.cubicTo(614.18335f, 81.6573868f, 614.607605f, 82.0816803f, 615.131226f, 82.0816803f);
    pathB.lineTo(619.693787f, 82.0816803f);
    pathB.cubicTo(619.680908f, 82.1423492f, 619.669128f, 82.2026367f, 619.657776f, 82.2629166f);
    pathB.cubicTo(619.571289f, 82.728157f, 619.529602f, 83.3200302f, 619.529602f, 84.0730591f);
    pathB.cubicTo(619.529602f, 86.3196259f, 620.260254f, 88.1236954f, 621.701477f, 89.4348602f);
    pathB.cubicTo(623.116516f, 90.7225037f, 625.163269f, 91.3754272f, 627.784058f, 91.3754272f);
    pathB.cubicTo(630.525024f, 91.3754272f, 632.517944f, 90.8669662f, 633.876099f, 89.8208466f);
    pathB.cubicTo(635.291565f, 88.7314987f, 636.009705f, 87.0798492f, 636.009705f, 84.9129181f);
    pathB.cubicTo(636.010071f, 83.7905807f, 635.747314f, 82.7873077f, 635.22937f, 81.9311447f);
    pathB.close();
    pathB.moveTo(631.880554f, 85.7326736f);
    pathB.cubicTo(631.690552f, 86.0545807f, 631.436157f, 86.307869f, 631.102844f, 86.5076904f);
    pathB.cubicTo(630.736206f, 86.7279816f, 630.277039f, 86.8906479f, 629.737854f, 86.9903717f);
    pathB.cubicTo(629.146362f, 87.1003265f, 628.488892f, 87.1564484f, 627.783997f, 87.1564484f);
    pathB.cubicTo(626.159668f, 87.1564484f, 624.996399f, 86.8656235f, 624.327881f, 86.293457f);
    pathB.cubicTo(623.693604f, 85.7489777f, 623.385315f, 84.995575f, 623.385315f, 83.9896393f);
    pathB.cubicTo(623.385315f, 83.3655396f, 623.431519f, 82.8718567f, 623.522583f, 82.5215149f);
    pathB.cubicTo(623.563477f, 82.3645325f, 623.616943f, 82.2189331f, 623.684448f, 82.0824356f);
    pathB.lineTo(630.008179f, 82.0824356f);
    pathB.cubicTo(630.758911f, 82.247757f, 631.311401f, 82.5256805f, 631.650757f, 82.9101562f);
    pathB.cubicTo(631.990112f, 83.2942505f, 632.154663f, 83.8303986f, 632.154663f, 84.549675f);
    pathB.cubicTo(632.154663f, 85.02742f, 632.062927f, 85.4251709f, 631.880554f, 85.7326736f);
    pathB.close();
    pathB.moveTo(635.667664f, 69.5979919f);
    pathB.cubicTo(635.518311f, 69.0645142f, 635.325684f, 68.5818329f, 635.093994f, 68.1620941f);
    pathB.cubicTo(634.940796f, 67.8856812f, 634.770569f, 67.6316376f, 634.586304f, 67.4026184f);
    pathB.lineTo(635.054565f, 67.2619476f);
    pathB.cubicTo(635.455322f, 67.1417542f, 635.729858f, 66.7724457f, 635.729858f, 66.3538437f);
    pathB.lineTo(635.729858f, 64.7021942f);
    pathB.cubicTo(635.729858f, 64.4045486f, 635.590332f, 64.1243439f, 635.3526f, 63.9449997f);
    pathB.cubicTo(635.115234f, 63.7660294f, 634.807373f, 63.7087784f, 634.521057f, 63.7906761f);
    pathB.cubicTo(634.059998f, 63.9226265f, 633.544678f, 64.0155258f, 632.988831f, 64.0659485f);
    pathB.cubicTo(631.578735f, 64.1941071f, 629.921387f, 64.1565704f, 628.141968f, 64.0632935f);
    pathB.cubicTo(627.067383f, 64.0068054f, 625.948853f, 63.9779854f, 624.81665f, 63.9779854f);
    pathB.cubicTo(624.253601f, 63.9779854f, 623.681396f, 64.0359955f, 623.116089f, 64.1512604f);
    pathB.cubicTo(622.479126f, 64.2809448f, 621.888367f, 64.5437012f, 621.35907f, 64.9315872f);
    pathB.cubicTo(620.807007f, 65.3365402f, 620.360352f, 65.9159088f, 620.031189f, 66.6548996f);
    pathB.cubicTo(619.712708f, 67.3722839f, 619.557983f, 68.2625656f, 619.557983f, 69.3769379f);
    pathB.cubicTo(619.557983f, 70.4655304f, 619.669128f, 71.5268097f, 619.887878f, 72.5323639f);
    pathB.cubicTo(620.11499f, 73.573555f, 620.473694f, 74.5040283f, 620.954468f, 75.2983856f);
    pathB.cubicTo(621.196411f, 75.6976471f, 621.693481f, 75.861824f, 622.124939f, 75.6847534f);
    pathB.lineTo(623.832336f, 74.9851913f);
    pathB.cubicTo(624.086365f, 74.8809204f, 624.282776f, 74.6716156f, 624.370728f, 74.4111328f);
    pathB.cubicTo(624.45874f, 74.15065f, 624.429138f, 73.8651276f, 624.290405f, 73.6281509f);
    pathB.cubicTo(624.166382f, 73.416954f, 624.051147f, 73.1644287f, 623.947205f, 72.875885f);
    pathB.cubicTo(623.836853f, 72.5702744f, 623.741333f, 72.2407837f, 623.663574f, 71.8968811f);
    pathB.cubicTo(623.584717f, 71.549942f, 623.522217f, 71.2018585f, 623.477417f, 70.8621292f);
    pathB.cubicTo(623.434937f, 70.5409775f, 623.41333f, 70.2391663f, 623.41333f, 69.9646454f);
    pathB.cubicTo(623.41333f, 68.8229752f, 623.672729f, 68.4748993f, 623.75116f, 68.3960266f);
    pathB.cubicTo(623.853577f, 68.2940369f, 624.20166f, 68.0574341f, 625.236755f, 68.0574341f);
    pathB.cubicTo(625.39679f, 68.0574341f, 625.566284f, 68.0616074f, 625.744446f, 68.0695648f);
    pathB.lineTo(625.744446f, 68.7331085f);
    pathB.cubicTo(625.744446f, 69.8065338f, 625.819153f, 70.8048782f, 625.967041f, 71.70047f);
    pathB.cubicTo(626.12323f, 72.6483841f, 626.392456f, 73.4825516f, 626.767456f, 74.1794586f);
    pathB.cubicTo(627.173523f, 74.9328613f, 627.730957f, 75.5292969f, 628.424438f, 75.9528198f);
    pathB.cubicTo(629.123596f, 76.3790054f, 629.981628f, 76.5951309f, 630.975464f, 76.5951309f);
    pathB.cubicTo(631.722046f, 76.5951309f, 632.406799f, 76.4597626f, 633.009644f, 76.1924591f);
    pathB.cubicTo(633.611816f, 75.9262848f, 634.136536f, 75.5543213f, 634.567688f, 75.0875626f);
    pathB.cubicTo(634.998779f, 74.6223297f, 635.333191f, 74.0672302f, 635.561096f, 73.4370575f);
    pathB.cubicTo(635.78479f, 72.8212891f, 635.898193f, 72.1520538f, 635.898193f, 71.4479446f);
    pathB.cubicTo(635.898193f, 70.7688599f, 635.820496f, 70.1462708f, 635.667664f, 69.5979919f);
    pathB.close();
    pathB.moveTo(631.656494f, 71.9905396f);
    pathB.cubicTo(631.416077f, 72.2574692f, 631.13739f, 72.3765259f, 630.751404f, 72.3765259f);
    pathB.cubicTo(630.390015f, 72.3765259f, 630.239502f, 72.2536774f, 630.190247f, 72.2127228f);
    pathB.cubicTo(630.002197f, 72.0587845f, 629.853149f, 71.8483429f, 629.735596f, 71.5704193f);
    pathB.cubicTo(629.594177f, 71.2348557f, 629.494507f, 70.8310394f, 629.439453f, 70.3714905f);
    pathB.cubicTo(629.379211f, 69.8607559f, 629.348511f, 69.3284073f, 629.348511f, 68.7892303f);
    pathB.cubicTo(629.348511f, 68.5765228f, 629.351929f, 68.3603973f, 629.357971f, 68.1416168f);
    pathB.lineTo(630.581177f, 68.1416168f);
    pathB.cubicTo(630.702515f, 68.2026672f, 630.831787f, 68.2841797f, 630.967163f, 68.3857956f);
    pathB.cubicTo(631.149902f, 68.523056f, 631.322815f, 68.703537f, 631.480225f, 68.922699f);
    pathB.cubicTo(631.639038f, 69.1437531f, 631.77478f, 69.4186478f, 631.884399f, 69.7390442f);
    pathB.cubicTo(631.989807f, 70.0488281f, 632.04364f, 70.4169922f, 632.04364f, 70.8329391f);
    pathB.cubicTo(632.042847f, 71.3228302f, 631.916565f, 71.7012329f, 631.656494f, 71.9905396f);
    pathB.close();
    pathB.moveTo(622.689575f, 63.4953079f);
    pathB.lineTo(620.72998f, 63.4953079f);
    pathB.cubicTo(620.206421f, 63.4953079f, 619.782104f, 63.0710182f, 619.782104f, 62.54739f);
    pathB.lineTo(619.782104f, 61.3116837f);
    pathB.lineTo(617.958679f, 61.3116837f);
    pathB.cubicTo(617.536255f, 61.3116837f, 617.164307f, 61.0318604f, 617.047913f, 60.6257744f);
    pathB.lineTo(616.404114f, 58.3864136f);
    pathB.cubicTo(616.321411f, 58.1001472f, 616.378662f, 57.7922592f, 616.557678f, 57.5541458f);
    pathB.cubicTo(616.737061f, 57.3164062f, 617.017212f, 57.1764946f, 617.31488f, 57.1764946f);
    pathB.lineTo(619.782104f, 57.1764946f);
    pathB.lineTo(619.782104f, 54.3171997f);
    pathB.cubicTo(619.782104f, 53.7935715f, 620.206421f, 53.3692818f, 620.730042f, 53.3692818f);
    pathB.lineTo(622.689575f, 53.3692818f);
    pathB.cubicTo(623.213196f, 53.3692818f, 623.637512f, 53.7935715f, 623.637512f, 54.3171997f);
    pathB.lineTo(623.637512f, 57.1764946f);
    pathB.lineTo(630.443176f, 57.1764946f);
    pathB.cubicTo(631.548828f, 57.1764946f, 631.921936f, 57.0028381f, 632.009888f, 56.9493713f);
    pathB.cubicTo(632.057617f, 56.9205589f, 632.154724f, 56.8621674f, 632.154724f, 56.5288773f);
    pathB.cubicTo(632.154724f, 56.139473f, 632.116821f, 55.8179398f, 632.04248f, 55.5737572f);
    pathB.cubicTo(631.949219f, 55.268528f, 631.822205f, 54.9193192f, 631.665588f, 54.5363579f);
    pathB.cubicTo(631.563599f, 54.288002f, 631.572327f, 54.0085602f, 631.688354f, 53.7670288f);
    pathB.cubicTo(631.804749f, 53.5251198f, 632.017456f, 53.3438797f, 632.274536f, 53.2680435f);
    pathB.lineTo(633.9823f, 52.7641296f);
    pathB.cubicTo(634.430115f, 52.6325607f, 634.90332f, 52.8437576f, 635.105042f, 53.2623596f);
    pathB.cubicTo(635.375f, 53.8235245f, 635.59491f, 54.4404297f, 635.758301f, 55.0956268f);
    pathB.cubicTo(635.925537f, 55.7656174f, 636.010498f, 56.4928589f, 636.010498f, 57.2565002f);
    pathB.cubicTo(636.010498f, 58.7109833f, 635.553589f, 59.7790947f, 634.653076f, 60.4316406f);
    pathB.cubicTo(633.835938f, 61.0235176f, 632.596069f, 61.311306f, 630.863647f, 61.311306f);
    pathB.lineTo(623.637878f, 61.311306f);
    pathB.lineTo(623.637878f, 62.5470123f);
    pathB.cubicTo(623.637451f, 63.071022f, 623.213196f, 63.4953079f, 622.689575f, 63.4953079f);
    pathB.close();
    pathB.moveTo(635.667664f, 46.2246475f);
    pathB.cubicTo(635.518311f, 45.6911545f, 635.325684f, 45.2084808f, 635.093994f, 44.7887421f);
    pathB.cubicTo(634.940796f, 44.5123291f, 634.770569f, 44.2582855f, 634.586304f, 44.029274f);
    pathB.lineTo(635.054565f, 43.8886032f);
    pathB.cubicTo(635.455322f, 43.7684059f, 635.729858f, 43.3990974f, 635.729858f, 42.9804955f);
    pathB.lineTo(635.729858f, 41.328846f);
    pathB.cubicTo(635.729858f, 41.0312004f, 635.590332f, 40.7509995f, 635.3526f, 40.5716515f);
    pathB.cubicTo(635.115234f, 40.3926849f, 634.807373f, 40.3354301f, 634.521057f, 40.4173279f);
    pathB.cubicTo(634.059998f, 40.5492783f, 633.544678f, 40.6421738f, 632.988831f, 40.6926041f);
    pathB.cubicTo(631.578735f, 40.8207626f, 629.921387f, 40.7836075f, 628.141968f, 40.689949f);
    pathB.cubicTo(627.067383f, 40.6334534f, 625.948853f, 40.6046371f, 624.81665f, 40.6046371f);
    pathB.cubicTo(624.253601f, 40.6046371f, 623.681396f, 40.6626511f, 623.116089f, 40.777916f);
    pathB.cubicTo(622.479126f, 40.9075928f, 621.888367f, 41.1703568f, 621.35907f, 41.5582428f);
    pathB.cubicTo(620.807007f, 41.963192f, 620.360352f, 42.5425606f, 620.031189f, 43.2815552f);
    pathB.cubicTo(619.712708f, 43.9989395f, 619.557983f, 44.8892212f, 619.557983f, 46.0035934f);
    pathB.cubicTo(619.557983f, 47.0921783f, 619.669128f, 48.1534653f, 619.887878f, 49.1590195f);
    pathB.cubicTo(620.11499f, 50.2002106f, 620.473694f, 51.1306839f, 620.954468f, 51.9250374f);
    pathB.cubicTo(621.196411f, 52.3243027f, 621.693481f, 52.4880981f, 622.124939f, 52.311409f);
    pathB.lineTo(623.832336f, 51.6118431f);
    pathB.cubicTo(624.086365f, 51.5075722f, 624.282776f, 51.2982712f, 624.370728f, 51.0377846f);
    pathB.cubicTo(624.45874f, 50.777298f, 624.429138f, 50.4917831f, 624.290405f, 50.2548065f);
    pathB.cubicTo(624.166382f, 50.0436096f, 624.051147f, 49.7910843f, 623.947205f, 49.5025406f);
    pathB.cubicTo(623.836853f, 49.1969299f, 623.741333f, 48.8674355f, 623.663574f, 48.5235291f);
    pathB.cubicTo(623.584717f, 48.1765938f, 623.522217f, 47.8285179f, 623.477417f, 47.4887848f);
    pathB.cubicTo(623.434937f, 47.1676331f, 623.41333f, 46.8658142f, 623.41333f, 46.5912971f);
    pathB.cubicTo(623.41333f, 45.4496269f, 623.672729f, 45.1015511f, 623.75116f, 45.0226822f);
    pathB.cubicTo(623.853577f, 44.9206886f, 624.20166f, 44.6840897f, 625.236755f, 44.6840897f);
    pathB.cubicTo(625.39679f, 44.6840897f, 625.566284f, 44.6882591f, 625.744446f, 44.6962204f);
    pathB.lineTo(625.744446f, 45.3597641f);
    pathB.cubicTo(625.744446f, 46.4331856f, 625.819153f, 47.43153f, 625.967041f, 48.3271217f);
    pathB.cubicTo(626.12323f, 49.2750397f, 626.392456f, 50.1092072f, 626.767456f, 50.8061142f);
    pathB.cubicTo(627.173523f, 51.5595169f, 627.730957f, 52.1559486f, 628.424438f, 52.5794754f);
    pathB.cubicTo(629.123596f, 53.005661f, 629.981628f, 53.2217865f, 630.975464f, 53.2217865f);
    pathB.cubicTo(631.722046f, 53.2217865f, 632.406799f, 53.086422f, 633.009644f, 52.8191147f);
    pathB.cubicTo(633.611816f, 52.5529366f, 634.136536f, 52.1809769f, 634.567688f, 51.7142181f);
    pathB.cubicTo(634.998779f, 51.2489815f, 635.333191f, 50.693882f, 635.561096f, 50.0637054f);
    pathB.cubicTo(635.78479f, 49.4479408f, 635.898193f, 48.7787094f, 635.898193f, 48.0746002f);
    pathB.cubicTo(635.898193f, 47.3958893f, 635.820496f, 46.7733002f, 635.667664f, 46.2246475f);
    pathB.close();
    pathB.moveTo(631.656494f, 48.6171875f);
    pathB.cubicTo(631.416077f, 48.8841209f, 631.13739f, 49.0031815f, 630.751404f, 49.0031815f);
    pathB.cubicTo(630.390015f, 49.0031815f, 630.239502f, 48.8803291f, 630.190247f, 48.8393784f);
    pathB.cubicTo(630.002197f, 48.6854401f, 629.853149f, 48.4749985f, 629.735596f, 48.1970711f);
    pathB.cubicTo(629.594177f, 47.8615112f, 629.494507f, 47.457695f, 629.439453f, 46.9981461f);
    pathB.cubicTo(629.379211f, 46.4874115f, 629.348511f, 45.9550591f, 629.348511f, 45.4158859f);
    pathB.cubicTo(629.348511f, 45.2031708f, 629.351929f, 44.9870453f, 629.357971f, 44.7682648f);
    pathB.lineTo(630.581177f, 44.7682648f);
    pathB.cubicTo(630.702515f, 44.8293152f, 630.831787f, 44.9108353f, 630.967163f, 45.0124512f);
    pathB.cubicTo(631.149902f, 45.1497116f, 631.322815f, 45.3301926f, 631.480225f, 45.5493507f);
    pathB.cubicTo(631.639038f, 45.7704048f, 631.77478f, 46.0453033f, 631.884399f, 46.3656998f);
    pathB.cubicTo(631.989807f, 46.6754761f, 632.04364f, 47.0436478f, 632.04364f, 47.4595947f);
    pathB.cubicTo(632.042847f, 47.949852f, 631.916565f, 48.3282623f, 631.656494f, 48.6171875f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_seopack_blogspot_com_2153(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(999.892212f, 246);
    path.lineTo(927.340759f, 245.505722f);
    path.quadTo(928.068054f, 246, 929, 246);
    path.lineTo(999.892212f, 246);
    path.close();
    path.moveTo(927.340759f, 245.505722f);
    path.lineTo(926.5f, 245.5f);
    path.lineTo(925.17157f, 246.82843f);
    path.quadTo(926.34314f, 248, 928, 248);
    path.lineTo(1000, 248);
    path.lineTo(1000, 246);
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(924, 248);
    pathB.lineTo(924, 245.472672f);
    pathB.lineTo(1143, 247);
    pathB.lineTo(1143, 248);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_lokado_de_173(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1000, 896.991394f);
    path.quadTo(999.789917f, 896.718872f, 999.535522f, 896.464478f);
    path.quadTo(998.071045f, 895, 996, 895);
    path.lineTo(956, 895);
    path.quadTo(951.857849f, 895, 948.928955f, 897.928955f);
    path.quadTo(946, 900.857849f, 946, 905);
    path.lineTo(946, 906);
    path.quadTo(946, 910.142151f, 948.928955f, 913.071045f);
    path.quadTo(951.857849f, 916, 956, 916);
    path.lineTo(996, 916);
    path.quadTo(998.071045f, 916, 999.535522f, 914.535522f);
    path.quadTo(999.789917f, 914.281128f, 1000, 914.008606f);
    path.lineTo(1000, 896.991394f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(946, 906);
    pathB.lineTo(946, 905);
    pathB.quadTo(946, 901.272095f, 948.928955f, 898.636047f);
    pathB.quadTo(951.857849f, 896, 956, 896);
    pathB.lineTo(996, 896);
    pathB.quadTo(998.071045f, 896, 999.535522f, 897.17157f);
    pathB.quadTo(1001, 898.34314f, 1001, 900);
    pathB.lineTo(1001, 911);
    pathB.quadTo(1001, 913.071045f, 999.535522f, 914.535522f);
    pathB.quadTo(998.071045f, 916, 996, 916);
    pathB.lineTo(956, 916);
    pathB.quadTo(951.857849f, 916, 948.928955f, 913.071045f);
    pathB.quadTo(946, 910.142151f, 946, 906);
    pathB.close();
    testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
}

static void skpwww_wartepop_blogspot_com_br_6(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(90.9763107f, 153.309662f);
    path.quadTo(91.9526215f, 152.333344f, 93.3333359f, 152.333344f);
    path.lineTo(124.666664f, 152.333344f);
    path.quadTo(126.047379f, 152.333344f, 127.023689f, 153.309662f);
    path.quadTo(128, 154.285965f, 128, 155.666672f);
    path.lineTo(128, 163.666672f);
    path.lineTo(90, 163.666672f);
    path.lineTo(90, 155.666672f);
    path.quadTo(90, 154.285965f, 90.9763107f, 153.309662f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(90, 163.666672f);
    pathB.lineTo(90, 155.666672f);
    pathB.quadTo(90, 154.285965f, 90.9763107f, 153.309662f);
    pathB.quadTo(91.9526215f, 152.333344f, 93.3333359f, 152.333344f);
    pathB.lineTo(124.666672f, 152.333344f);
    pathB.quadTo(125.909309f, 152.333344f, 126.787994f, 153.309662f);
    pathB.quadTo(127.666672f, 154.285965f, 127.666672f, 155.666672f);
    pathB.lineTo(127.666672f, 163.666672f);
    pathB.lineTo(127.666672f, 163.666672f);
    pathB.lineTo(127.666672f, 163.666672f);
    pathB.lineTo(90, 163.666672f);
    pathB.lineTo(90, 163.666672f);
    pathB.lineTo(90, 163.666672f);
    pathB.close();
    testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
}

static void skpwww_wartepop_blogspot_com_br_6a(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(90.9763107f, 153.309662f);
    path.quadTo(91.9526215f, 152.333344f, 93.3333359f, 152.333344f);
    path.lineTo(124.666672f, 152.333344f);
    path.quadTo(126.047379f, 152.333344f, 127.023689f, 153.309662f);
    path.quadTo(128, 154.285965f, 128, 155.666672f);
    path.lineTo(128, 163.666672f);
    path.lineTo(90, 163.666672f);
    path.lineTo(90, 155.666672f);
    path.quadTo(90, 154.285965f, 90.9763107f, 153.309662f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(90, 163.666672f);
    pathB.lineTo(90, 155.666672f);
    pathB.quadTo(90, 154.285965f, 90.9763107f, 153.309662f);
    pathB.quadTo(91.9526215f, 152.333344f, 93.3333359f, 152.333344f);
    pathB.lineTo(124.666672f, 152.333344f);
    pathB.quadTo(125.909309f, 152.333344f, 126.787994f, 153.309662f);
    pathB.quadTo(127.666672f, 154.285965f, 127.666672f, 155.666672f);
    pathB.lineTo(127.666672f, 163.666672f);
    pathB.lineTo(127.666672f, 163.666672f);
    pathB.lineTo(127.666672f, 163.666672f);
    pathB.lineTo(90, 163.666672f);
    pathB.lineTo(90, 163.666672f);
    pathB.lineTo(90, 163.666672f);
    pathB.close();
    testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
}

static void skpwww_odia_com_br_26(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(360.740479f, 741.040771f);
    path.quadTo(360.378967f, 741, 360, 741);
    path.quadTo(359.159821f, 741, 358.403076f, 741.200745f);
    path.quadTo(357.649658f, 741.415833f, 356.92746f, 741.846436f);
    path.quadTo(356.600769f, 742.041199f, 356.310211f, 742.262268f);
    path.quadTo(356.025513f, 742.489197f, 355.757355f, 742.757385f);
    path.quadTo(355.16394f, 743.350769f, 354.770874f, 744.027283f);
    path.quadTo(354.389618f, 744.71283f, 354.183258f, 745.528564f);
    path.quadTo(354.090027f, 745.897095f, 354.040833f, 746.259277f);
    path.quadTo(354, 746.621216f, 354, 747);
    path.quadTo(354, 747.839844f, 354.200653f, 748.596497f);
    path.quadTo(354.415771f, 749.35022f, 354.846466f, 750.072632f);
    path.quadTo(355.040741f, 750.398438f, 355.261444f, 750.688721f);
    path.quadTo(355.488861f, 750.974121f, 355.757355f, 751.242615f);
    path.quadTo(356.352142f, 751.837402f, 357.030304f, 752.230896f);
    path.quadTo(357.714539f, 752.610901f, 358.528564f, 752.816833f);
    path.quadTo(358.895294f, 752.909607f, 359.25528f, 752.95874f);
    path.quadTo(359.618896f, 753, 360, 753);
    path.quadTo(360.842285f, 753, 361.600952f, 752.798157f);
    path.quadTo(362.352386f, 752.583008f, 363.072601f, 752.153625f);
    path.quadTo(363.397339f, 751.960022f, 363.686829f, 751.740051f);
    path.quadTo(363.973297f, 751.511963f, 364.242645f, 751.242615f);
    path.quadTo(364.837799f, 750.647461f, 365.231354f, 749.968933f);
    path.quadTo(365.610992f, 749.285034f, 365.816803f, 748.471497f);
    path.quadTo(365.909668f, 748.104431f, 365.958832f, 747.743713f);
    path.quadTo(366, 747.380371f, 366, 747);
    path.quadTo(366, 746.158997f, 365.798767f, 745.401367f);
    path.quadTo(365.583618f, 744.648682f, 365.153595f, 743.927429f);
    path.quadTo(364.959442f, 743.601807f, 364.738678f, 743.311462f);
    path.quadTo(364.511108f, 743.025818f, 364.242645f, 742.757385f);
    path.quadTo(363.649017f, 742.163757f, 362.972168f, 741.770569f);
    path.quadTo(362.286835f, 741.389526f, 361.471497f, 741.183289f);
    path.quadTo(361.102509f, 741.089966f, 360.740479f, 741.040771f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(355.654724f, 739.711792f);
    pathB.lineTo(367.288269f, 742.654724f);
    pathB.lineTo(364.345337f, 754.288269f);
    pathB.lineTo(352.711792f, 751.345337f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_evolvehq_com_210(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(172, 972);
    path.quadTo(170.757355f, 972, 169.878677f, 972.878662f);
    path.quadTo(169, 973.757385f, 169, 975);
    path.lineTo(169, 1171);
    path.quadTo(169, 1172.24268f, 169.878677f, 1173.12134f);
    path.quadTo(170.757355f, 1174, 172, 1174);
    path.lineTo(308, 1174);
    path.quadTo(309.242645f, 1174, 310.121307f, 1173.12134f);
    path.quadTo(310.337311f, 1172.9054f, 310.5f, 1172.66772f);
    path.lineTo(310.5f, 973.332336f);
    path.quadTo(310.337219f, 973.094604f, 310.121307f, 972.878662f);
    path.quadTo(309.242645f, 972, 308, 972);
    path.lineTo(172, 972);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(170, 1171);
    pathB.lineTo(170, 975);
    pathB.quadTo(170, 974.17157f, 170.585785f, 973.585815f);
    pathB.quadTo(171.17157f, 973, 172, 973);
    pathB.lineTo(308, 973);
    pathB.quadTo(309.242645f, 973, 310.121307f, 973.585815f);
    pathB.quadTo(311, 974.17157f, 311, 975);
    pathB.lineTo(311, 1171);
    pathB.quadTo(311, 1172.24268f, 310.121307f, 1173.12134f);
    pathB.quadTo(309.242645f, 1174, 308, 1174);
    pathB.lineTo(172, 1174);
    pathB.quadTo(171.17157f, 1174, 170.585785f, 1173.12134f);
    pathB.quadTo(170, 1172.24268f, 170, 1171);
    pathB.close();
    testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
}

static void skpwww_catingueiraonline_com_352(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(443, 8292);
    path.lineTo(443, 8140);
    path.lineTo(444, 8140);
    path.lineTo(444.01001f, 8292);
    path.lineTo(443, 8292);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(443, 8140);
    pathB.lineTo(444.01001f, 8140);
    pathB.lineTo(444, 8292);
    pathB.lineTo(443, 8292);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_galaxystwo_com_4(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(10105, 2510);
    path.lineTo(10123, 2509.98999f);
    path.lineTo(10123, 2511);
    path.lineTo(10105, 2511);
    path.lineTo(10105, 2510);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(10105, 2511);
    pathB.lineTo(10105, 2509.98999f);
    pathB.lineTo(10123, 2510);
    pathB.lineTo(10123, 2511);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_thaienews_blogspot_com_36(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(429.994995f, 6268);
    path.lineTo(430, 2187);
    path.lineTo(430.5f, 2187);
    path.lineTo(430.5f, 6268);
    path.lineTo(429.994995f, 6268);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(430.5f, 2187);
    pathB.lineTo(429.994995f, 2187);
    pathB.lineTo(430, 6268);
    pathB.lineTo(430.5f, 6268);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_fashionscandal_com_94(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(25.9107456f, 272.577423f);
    path.quadTo(26.1548233f, 272.333344f, 26.5000019f, 272.333344f);
    path.lineTo(131.166672f, 272.333344f);
    path.quadTo(131.511841f, 272.333344f, 131.75592f, 272.577423f);
    path.quadTo(132, 272.821503f, 132, 273.166687f);
    path.lineTo(132, 417.166656f);
    path.quadTo(132, 417.511841f, 131.75592f, 417.75592f);
    path.quadTo(131.511841f, 418, 131.166672f, 418);
    path.lineTo(26.5000019f, 418);
    path.quadTo(26.1548233f, 418, 25.9107456f, 417.75592f);
    path.quadTo(25.6666679f, 417.511841f, 25.6666679f, 417.166656f);
    path.lineTo(25.6666679f, 273.166687f);
    path.quadTo(25.6666679f, 272.821503f, 25.9107456f, 272.577423f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(25.833334f, 417.166656f);
    pathB.lineTo(25.833334f, 273.166656f);
    pathB.quadTo(25.833334f, 272.890533f, 26.0285969f, 272.695251f);
    pathB.quadTo(26.2238579f, 272.5f, 26.5f, 272.5f);
    pathB.lineTo(131.166672f, 272.5f);
    pathB.quadTo(131.442825f, 272.5f, 131.638077f, 272.695251f);
    pathB.quadTo(131.833344f, 272.890533f, 131.833344f, 273.166656f);
    pathB.lineTo(131.833344f, 417.166656f);
    pathB.quadTo(131.833344f, 417.511841f, 131.638077f, 417.75592f);
    pathB.quadTo(131.442825f, 418, 131.166672f, 418);
    pathB.lineTo(26.5f, 418);
    pathB.quadTo(26.2238579f, 418, 26.0285969f, 417.75592f);
    pathB.quadTo(25.833334f, 417.511841f, 25.833334f, 417.166656f);
    pathB.close();
    testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
}

static void skpwww_kenlevine_blogspot_com_28(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(276, 9506);
    path.lineTo(276, 7531);
    path.lineTo(277, 7531);
    path.lineTo(277.01001f, 9506);
    path.lineTo(276, 9506);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(276, 7531);
    pathB.lineTo(277.01001f, 7531);
    pathB.lineTo(277, 9506);
    pathB.lineTo(276, 9506);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_defense_studies_blogspot_com_64(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(276, 9600);
    path.lineTo(276, 7703);
    path.lineTo(277, 7703);
    path.lineTo(277.01001f, 9600);
    path.lineTo(276, 9600);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(276, 7703);
    pathB.lineTo(277.01001f, 7703);
    pathB.lineTo(277, 9600);
    pathB.lineTo(276, 9600);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_uniquefx_net_442(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(960, 306);
    path.lineTo(960, 305);
    path.lineTo(1000, 305);
    path.lineTo(1000, 306.708527f);
    path.lineTo(960, 306);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(960, 305);
    pathB.lineTo(958.997253f, 306.002747f);
    pathB.lineTo(1017, 307);
    pathB.lineTo(1019, 305);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_kitcheninspirations_wordpress_com_32(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(47.1666679f, 19651.334f);
    path.lineTo(65.8333359f, 19651.332f);
    path.lineTo(65.8333359f, 19651.5f);
    path.lineTo(47.1666679f, 19651.5f);
    path.lineTo(47.1666679f, 19651.334f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(47.1666679f, 19651.5f);
    pathB.lineTo(47.1666679f, 19651.332f);
    pathB.lineTo(65.8333359f, 19651.334f);
    pathB.lineTo(65.8333359f, 19651.5f);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_educationalcraft_com_4(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(941, 1494);
    path.lineTo(941, 1464);
    path.lineTo(985, 1464);
    path.lineTo(985, 1494);
    path.lineTo(941, 1494);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(979.211975f, 1480.45496f);
    pathB.cubicTo(979.211975f, 1480.45496f, 976.348999f, 1479.68506f, 977.495972f, 1475.59497f);
    pathB.cubicTo(977.497009f, 1475.59497f, 981.072021f, 1477.88501f, 979.211975f, 1480.45496f);
    pathB.close();
    pathB.moveTo(977.854004f, 1484.453f);
    pathB.cubicTo(977.854004f, 1484.453f, 975.265991f, 1483.26099f, 976.713989f, 1479.35205f);
    pathB.cubicTo(976.713989f, 1479.35303f, 979.84198f, 1482.23499f, 977.854004f, 1484.453f);
    pathB.close();
    pathB.moveTo(980.226013f, 1476.229f);
    pathB.cubicTo(980.226013f, 1476.229f, 977.078003f, 1476.349f, 977.234985f, 1471.97095f);
    pathB.cubicTo(977.234985f, 1471.97095f, 980.666992f, 1473.12903f, 980.226013f, 1476.229f);
    pathB.close();
    pathB.moveTo(984.546021f, 1478.31494f);
    pathB.cubicTo(984.546021f, 1478.31494f, 983.187988f, 1481.93396f, 980.026001f, 1481.276f);
    pathB.cubicTo(980.026978f, 1481.276f, 979.554993f, 1478.38904f, 984.546021f, 1478.31494f);
    pathB.close();
    pathB.moveTo(978.989014f, 1484.198f);
    pathB.cubicTo(978.989014f, 1484.198f, 979.094971f, 1481.33496f, 983.786011f, 1481.823f);
    pathB.cubicTo(983.786011f, 1481.823f, 982.070007f, 1485.49805f, 978.989014f, 1484.198f);
    pathB.close();
    pathB.moveTo(976.393005f, 1486.86804f);
    pathB.cubicTo(976.393005f, 1486.86804f, 976.719971f, 1484.06494f, 981.679016f, 1485.37f);
    pathB.cubicTo(981.679016f, 1485.37f, 979.169983f, 1488.40796f, 976.393005f, 1486.86804f);
    pathB.close();
    pathB.moveTo(969.156982f, 1490.40002f);
    pathB.cubicTo(969.156982f, 1490.40002f, 971.478027f, 1488.23596f, 974.869995f, 1491.21399f);
    pathB.cubicTo(974.869995f, 1491.21497f, 970.828003f, 1493.026f, 969.156982f, 1490.40002f);
    pathB.close();
    pathB.moveTo(972.825012f, 1483.93701f);
    pathB.cubicTo(972.825012f, 1483.93701f, 973.971985f, 1487.98401f, 971.161987f, 1488.94604f);
    pathB.cubicTo(971.161987f, 1488.94495f, 969.278015f, 1486.37097f, 972.825012f, 1483.93701f);
    pathB.close();
    pathB.moveTo(965.60199f, 1489.98499f);
    pathB.cubicTo(965.60199f, 1489.98499f, 964.879028f, 1487.19202f, 969.864014f, 1486.75f);
    pathB.cubicTo(969.864014f, 1486.75f, 968.749023f, 1490.672f, 965.60199f, 1489.98499f);
    pathB.close();
    pathB.moveTo(970.666992f, 1492.81604f);
    pathB.cubicTo(970.666992f, 1492.81604f, 967.327026f, 1494.49695f, 964.999023f, 1491.56299f);
    pathB.cubicTo(964.999023f, 1491.56299f, 967.304016f, 1489.43896f, 970.666992f, 1492.81604f);
    pathB.close();
    pathB.moveTo(968.343994f, 1481.53796f);
    pathB.cubicTo(971.573975f, 1479.94995f, 971.687988f, 1476.78601f, 971.687988f, 1476.78601f);
    pathB.lineTo(971.393982f, 1466.83398f);
    pathB.lineTo(954.960999f, 1466.83398f);
    pathB.lineTo(954.666016f, 1476.78601f);
    pathB.cubicTo(954.666016f, 1476.78601f, 954.780029f, 1479.94995f, 958.008972f, 1481.53796f);
    pathB.cubicTo(960.781006f, 1482.90295f, 962.166992f, 1484.77698f, 962.166992f, 1484.77698f);
    pathB.cubicTo(962.166992f, 1484.77698f, 962.747986f, 1485.70105f, 963.177979f, 1485.70105f);
    pathB.cubicTo(963.606995f, 1485.70105f, 964.185974f, 1484.77698f, 964.185974f, 1484.77698f);
    pathB.cubicTo(964.185974f, 1484.77698f, 965.573975f, 1482.90295f, 968.343994f, 1481.53796f);
    pathB.close();
    pathB.moveTo(963.215027f, 1486.67004f);
    pathB.cubicTo(962.744995f, 1486.67004f, 962.106995f, 1485.65405f, 962.106995f, 1485.65405f);
    pathB.cubicTo(962.106995f, 1485.65405f, 960.585022f, 1483.59595f, 957.539001f, 1482.09705f);
    pathB.cubicTo(953.991028f, 1480.35205f, 953.867004f, 1476.87598f, 953.867004f, 1476.87598f);
    pathB.lineTo(954.190002f, 1465.94397f);
    pathB.lineTo(972.23999f, 1465.94397f);
    pathB.lineTo(972.565002f, 1476.87695f);
    pathB.cubicTo(972.565002f, 1476.87695f, 972.440979f, 1480.35303f, 968.891968f, 1482.09802f);
    pathB.cubicTo(965.846008f, 1483.59705f, 964.325012f, 1485.65503f, 964.325012f, 1485.65503f);
    pathB.cubicTo(964.325012f, 1485.65503f, 963.687012f, 1486.67004f, 963.215027f, 1486.67004f);
    pathB.close();
    pathB.moveTo(960.68103f, 1489.98499f);
    pathB.cubicTo(957.533997f, 1490.672f, 956.417969f, 1486.75f, 956.417969f, 1486.75f);
    pathB.cubicTo(961.403015f, 1487.19202f, 960.68103f, 1489.98499f, 960.68103f, 1489.98499f);
    pathB.close();
    pathB.moveTo(963.143005f, 1489.59802f);
    pathB.cubicTo(963.763f, 1489.59802f, 964.265015f, 1490.09998f, 964.265015f, 1490.72095f);
    pathB.cubicTo(964.265015f, 1491.34204f, 963.763f, 1491.84399f, 963.143005f, 1491.84399f);
    pathB.cubicTo(962.521973f, 1491.84399f, 962.02002f, 1491.34204f, 962.02002f, 1490.72095f);
    pathB.cubicTo(962.02002f, 1490.09998f, 962.521973f, 1489.59802f, 963.143005f, 1489.59802f);
    pathB.close();
    pathB.moveTo(961.283997f, 1491.56299f);
    pathB.cubicTo(958.953979f, 1494.49695f, 955.61499f, 1492.81604f, 955.61499f, 1492.81604f);
    pathB.cubicTo(958.97699f, 1489.43896f, 961.283997f, 1491.56299f, 961.283997f, 1491.56299f);
    pathB.close();
    pathB.moveTo(957.127014f, 1490.40002f);
    pathB.cubicTo(955.455017f, 1493.026f, 951.414001f, 1491.21399f, 951.414001f, 1491.21399f);
    pathB.cubicTo(954.802979f, 1488.23596f, 957.127014f, 1490.40002f, 957.127014f, 1490.40002f);
    pathB.close();
    pathB.moveTo(949.890991f, 1486.86804f);
    pathB.cubicTo(947.112976f, 1488.40796f, 944.604004f, 1485.37f, 944.604004f, 1485.37f);
    pathB.cubicTo(949.562012f, 1484.06494f, 949.890991f, 1486.86804f, 949.890991f, 1486.86804f);
    pathB.close();
    pathB.moveTo(947.070984f, 1480.45496f);
    pathB.cubicTo(945.211975f, 1477.88501f, 948.786011f, 1475.59497f, 948.786011f, 1475.59497f);
    pathB.cubicTo(949.934021f, 1479.68506f, 947.070984f, 1480.45496f, 947.070984f, 1480.45496f);
    pathB.close();
    pathB.moveTo(946.054016f, 1476.229f);
    pathB.cubicTo(945.61499f, 1473.12903f, 949.046997f, 1471.97095f, 949.046997f, 1471.97095f);
    pathB.cubicTo(949.205994f, 1476.349f, 946.054016f, 1476.229f, 946.054016f, 1476.229f);
    pathB.close();
    pathB.moveTo(948.427002f, 1484.453f);
    pathB.cubicTo(946.440002f, 1482.23499f, 949.567993f, 1479.35205f, 949.567993f, 1479.35205f);
    pathB.cubicTo(951.015991f, 1483.26099f, 948.427002f, 1484.453f, 948.427002f, 1484.453f);
    pathB.close();
    pathB.moveTo(947.294006f, 1484.198f);
    pathB.cubicTo(944.210999f, 1485.49805f, 942.495972f, 1481.823f, 942.495972f, 1481.823f);
    pathB.cubicTo(947.187988f, 1481.33496f, 947.294006f, 1484.198f, 947.294006f, 1484.198f);
    pathB.close();
    pathB.moveTo(946.255005f, 1481.276f);
    pathB.cubicTo(943.094971f, 1481.93396f, 941.736023f, 1478.31494f, 941.736023f, 1478.31494f);
    pathB.cubicTo(946.728027f, 1478.38904f, 946.255005f, 1481.276f, 946.255005f, 1481.276f);
    pathB.close();
    pathB.moveTo(945.312988f, 1478.18005f);
    pathB.cubicTo(942.052979f, 1477.80103f, 942.651001f, 1473.87805f, 942.651001f, 1473.87805f);
    pathB.cubicTo(946.562988f, 1475.66199f, 945.312988f, 1478.18005f, 945.312988f, 1478.18005f);
    pathB.close();
    pathB.moveTo(945.382019f, 1474.328f);
    pathB.cubicTo(942.924011f, 1472.729f, 944.492004f, 1469.48706f, 944.492004f, 1469.48706f);
    pathB.cubicTo(947.388977f, 1471.95703f, 945.382019f, 1474.328f, 945.382019f, 1474.328f);
    pathB.close();
    pathB.moveTo(946.797974f, 1470.27405f);
    pathB.cubicTo(944.664978f, 1467.90198f, 947.083984f, 1465.50598f, 947.083984f, 1465.50598f);
    pathB.cubicTo(949.145996f, 1468.82605f, 946.797974f, 1470.27405f, 946.797974f, 1470.27405f);
    pathB.close();
    pathB.moveTo(947.392029f, 1471.64197f);
    pathB.cubicTo(947.624023f, 1468.56299f, 951.361023f, 1468.29199f, 951.361023f, 1468.29199f);
    pathB.cubicTo(950.554016f, 1471.98499f, 947.392029f, 1471.64197f, 947.392029f, 1471.64197f);
    pathB.close();
    pathB.moveTo(948.64801f, 1468.15002f);
    pathB.cubicTo(948.638977f, 1465.22095f, 952.265991f, 1464.46399f, 952.265991f, 1464.46399f);
    pathB.cubicTo(951.672974f, 1468.53101f, 948.64801f, 1468.15002f, 948.64801f, 1468.15002f);
    pathB.close();
    pathB.moveTo(951.176025f, 1486.97803f);
    pathB.cubicTo(948.963013f, 1484.62f, 951.361023f, 1481.77698f, 951.361023f, 1481.77698f);
    pathB.cubicTo(953.734985f, 1485.48596f, 951.176025f, 1486.97803f, 951.176025f, 1486.97803f);
    pathB.close();
    pathB.moveTo(947.51001f, 1488.53101f);
    pathB.cubicTo(947.51001f, 1488.53101f, 951.596985f, 1486.32202f, 953.234009f, 1489.08997f);
    pathB.cubicTo(953.234009f, 1489.08997f, 951.158997f, 1491.03601f, 947.51001f, 1488.53101f);
    pathB.close();
    pathB.moveTo(955.120972f, 1488.94495f);
    pathB.cubicTo(952.309021f, 1487.98303f, 953.458984f, 1483.93604f, 953.458984f, 1483.93604f);
    pathB.cubicTo(957.004028f, 1486.37097f, 955.120972f, 1488.94495f, 955.120972f, 1488.94495f);
    pathB.close();
    pathB.moveTo(978.770996f, 1488.53101f);
    pathB.cubicTo(975.122986f, 1491.03601f, 973.047974f, 1489.08997f, 973.047974f, 1489.08997f);
    pathB.cubicTo(974.684998f, 1486.32202f, 978.770996f, 1488.53101f, 978.770996f, 1488.53101f);
    pathB.close();
    pathB.moveTo(975.106995f, 1486.97803f);
    pathB.cubicTo(975.106995f, 1486.97803f, 972.546997f, 1485.48706f, 974.919983f, 1481.77698f);
    pathB.cubicTo(974.919983f, 1481.776f, 977.31897f, 1484.61902f, 975.106995f, 1486.97803f);
    pathB.close();
    pathB.moveTo(974.016968f, 1464.46399f);
    pathB.cubicTo(974.016968f, 1464.46399f, 977.643982f, 1465.22095f, 977.633972f, 1468.15002f);
    pathB.cubicTo(977.633972f, 1468.15002f, 974.611023f, 1468.53101f, 974.016968f, 1464.46399f);
    pathB.close();
    pathB.moveTo(974.919983f, 1468.29199f);
    pathB.cubicTo(974.919983f, 1468.29199f, 978.658997f, 1468.56299f, 978.890015f, 1471.64197f);
    pathB.cubicTo(978.890015f, 1471.64197f, 975.72699f, 1471.98499f, 974.919983f, 1468.29199f);
    pathB.close();
    pathB.moveTo(979.197998f, 1465.50598f);
    pathB.cubicTo(979.197998f, 1465.50598f, 981.619019f, 1467.90198f, 979.481995f, 1470.27405f);
    pathB.cubicTo(979.481995f, 1470.27405f, 977.138f, 1468.82605f, 979.197998f, 1465.50598f);
    pathB.close();
    pathB.moveTo(980.900024f, 1474.328f);
    pathB.cubicTo(980.900024f, 1474.328f, 978.893005f, 1471.95703f, 981.791016f, 1469.48706f);
    pathB.cubicTo(981.791016f, 1469.48596f, 983.358032f, 1472.729f, 980.900024f, 1474.328f);
    pathB.close();
    pathB.moveTo(980.968994f, 1478.18005f);
    pathB.cubicTo(980.968994f, 1478.18005f, 979.718018f, 1475.66199f, 983.632019f, 1473.87805f);
    pathB.cubicTo(983.632019f, 1473.87805f, 984.229004f, 1477.80103f, 980.968994f, 1478.18005f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_narayana_publishers_com_194(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1083.34314f, 445.65686f);
    path.quadTo(1081, 443.313721f, 1081, 440);
    path.lineTo(1257, 440);
    path.quadTo(1257, 443.313721f, 1254.65686f, 445.65686f);
    path.quadTo(1252.31372f, 448, 1249, 448);
    path.lineTo(1089, 448);
    path.quadTo(1085.68628f, 448, 1083.34314f, 445.65686f);
    path.close();
    path.moveTo(1083, 441);
    path.lineTo(1255, 441);
    path.quadTo(1255, 443.071075f, 1253.53552f, 444.535522f);
    path.quadTo(1252.07104f, 446, 1250, 446);
    path.lineTo(1088, 446);
    path.quadTo(1085.92896f, 446, 1084.46448f, 444.535522f);
    path.quadTo(1083, 443.071075f, 1083, 441);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(1081, 440);
    pathB.lineTo(1082, 440);
    pathB.lineTo(1090.01001f, 448);
    pathB.lineTo(1081, 448);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_cooksnaps_com_17(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(170.340179f, 176);
    path.lineTo(166, 176);
    path.quadTo(161.964188f, 176, 158.299957f, 176.896912f);
    path.quadTo(154.678162f, 177.952271f, 151.183014f, 179.9702f);
    path.lineTo(150.316986f, 180.4702f);
    path.quadTo(146.175812f, 182.861099f, 143.115921f, 186.081696f);
    path.quadTo(140.693939f, 188.70134f, 138.99472f, 191.620407f);
    path.quadTo(137.316833f, 194.550888f, 136.259338f, 197.957367f);
    path.quadTo(135, 202.217865f, 135, 207);
    path.lineTo(135, 208);
    path.quadTo(135, 212.035751f, 135.896912f, 215.699997f);
    path.quadTo(136.952286f, 219.321869f, 138.9702f, 222.816986f);
    path.lineTo(139.4702f, 223.683014f);
    path.quadTo(141.861099f, 227.824188f, 145.081696f, 230.884079f);
    path.quadTo(147.70134f, 233.306061f, 150.620407f, 235.00528f);
    path.quadTo(153.550888f, 236.683167f, 156.957367f, 237.740662f);
    path.quadTo(161.217865f, 239, 166, 239);
    path.lineTo(170.482162f, 239);
    path.quadTo(176.307037f, 238.210968f, 181.816986f, 235.0298f);
    path.lineTo(182.683014f, 234.5298f);
    path.quadTo(182.686462f, 234.527817f, 182.689896f, 234.525818f);
    path.quadTo(193.804352f, 228.105652f, 197.126709f, 215.70639f);
    path.quadTo(200.450104f, 203.303314f, 194.0298f, 192.183014f);
    path.lineTo(193.5298f, 191.316986f);
    path.quadTo(187.109497f, 180.196686f, 174.706406f, 176.873276f);
    path.quadTo(172.503067f, 176.282898f, 170.340179f, 176);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(139.4702f, 223.683014f);
    pathB.lineTo(138.9702f, 222.816986f);
    pathB.quadTo(132.549896f, 211.696686f, 135.873291f, 199.293594f);
    pathB.quadTo(139.196686f, 186.890503f, 150.316986f, 180.4702f);
    pathB.lineTo(151.183014f, 179.9702f);
    pathB.quadTo(162.303314f, 173.549896f, 174.706406f, 176.873276f);
    pathB.quadTo(187.109497f, 180.196686f, 193.5298f, 191.316986f);
    pathB.lineTo(194.0298f, 192.183014f);
    pathB.quadTo(200.450104f, 203.303314f, 197.126709f, 215.70639f);
    pathB.quadTo(193.803314f, 228.109497f, 182.683014f, 234.5298f);
    pathB.lineTo(181.816986f, 235.0298f);
    pathB.quadTo(170.696686f, 241.450104f, 158.293594f, 238.126709f);
    pathB.quadTo(145.890503f, 234.803314f, 139.4702f, 223.683014f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_swapspacesystems_com_5(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(819.050781f, 5539.72412f);
    path.quadTo(819.651672f, 5539.1543f, 820.479858f, 5539.17578f);
    path.lineTo(1191.35278f, 5548.8877f);
    path.quadTo(1192.18091f, 5548.90918f, 1192.7511f, 5549.50977f);
    path.quadTo(1193.32141f, 5550.11133f, 1193.29968f, 5550.93945f);
    path.lineTo(1186.57214f, 5807.85107f);
    path.quadTo(1186.55054f, 5808.6792f, 1185.94958f, 5809.24951f);
    path.quadTo(1185.34863f, 5809.81982f, 1184.52051f, 5809.79834f);
    path.lineTo(813.647705f, 5800.08643f);
    path.quadTo(812.819519f, 5800.06494f, 812.249268f, 5799.46387f);
    path.quadTo(811.679016f, 5798.86279f, 811.700684f, 5798.03467f);
    path.lineTo(818.428162f, 5541.12305f);
    path.quadTo(818.44989f, 5540.29492f, 819.050781f, 5539.72412f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(818.48053f, 5539.12354f);
    pathB.lineTo(1193.35205f, 5548.93994f);
    pathB.lineTo(1186.5199f, 5809.85059f);
    pathB.lineTo(811.648376f, 5800.03418f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_kitcheninspirations_wordpress_com_66(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(47.1666679f, 27820.668f);
    path.lineTo(60.8333359f, 27820.668f);
    path.lineTo(60.8333359f, 27820.498f);
    path.lineTo(47.1666679f, 27820.5f);
    path.lineTo(47.1666679f, 27820.668f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(47.1666679f, 27820.668f);
    pathB.lineTo(47.1666679f, 27820.498f);
    pathB.lineTo(60.8333359f, 27820.5f);
    pathB.lineTo(60.8333359f, 27820.668f);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_etiqadd_com_2464(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(630.378662f, 1293.42896f);
    path.quadTo(631.257385f, 1292.55029f, 632.5f, 1292.55029f);
    path.quadTo(633.742615f, 1292.55029f, 634.621338f, 1293.42896f);
    path.lineTo(639.571045f, 1298.37866f);
    path.quadTo(640.449768f, 1299.25732f, 640.449707f, 1300.5f);
    path.quadTo(640.449768f, 1301.74268f, 639.571045f, 1302.62134f);
    path.lineTo(634.621338f, 1307.57104f);
    path.quadTo(633.742615f, 1308.44971f, 632.5f, 1308.44971f);
    path.quadTo(631.257385f, 1308.44971f, 630.378662f, 1307.57104f);
    path.lineTo(625.428955f, 1302.62134f);
    path.quadTo(624.550232f, 1301.74268f, 624.550293f, 1300.5f);
    path.quadTo(624.550232f, 1299.25732f, 625.428955f, 1298.37866f);
    path.lineTo(630.378662f, 1293.42896f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(632.5f, 1291.30762f);
    pathB.lineTo(641.692383f, 1300.5f);
    pathB.lineTo(632.5f, 1309.69238f);
    pathB.lineTo(623.307617f, 1300.5f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_narayana_verlag_de_194(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1083.34314f, 513.65686f);
    path.quadTo(1081, 511.313721f, 1081, 508);
    path.lineTo(1257, 508);
    path.quadTo(1257, 511.313721f, 1254.65686f, 513.65686f);
    path.quadTo(1252.31372f, 516, 1249, 516);
    path.lineTo(1089, 516);
    path.quadTo(1085.68628f, 516, 1083.34314f, 513.65686f);
    path.close();
    path.moveTo(1083, 509);
    path.lineTo(1255, 509);
    path.quadTo(1255, 511.071075f, 1253.53552f, 512.535522f);
    path.quadTo(1252.07104f, 514, 1250, 514);
    path.lineTo(1088, 514);
    path.quadTo(1085.92896f, 514, 1084.46448f, 512.535522f);
    path.quadTo(1083, 511.071075f, 1083, 509);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(1081, 508);
    pathB.lineTo(1082, 508);
    pathB.lineTo(1090.01001f, 516);
    pathB.lineTo(1081, 516);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_americascup_com_108(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(999.454102f, 689.17157f);
    path.quadTo(1001.172f, 688, 1002.82886f, 688);
    path.lineTo(1013.82886f, 688);
    path.lineTo(1002.17114f, 713);
    path.lineTo(991.171143f, 713);
    path.quadTo(989.514282f, 713, 988.889038f, 711.82843f);
    path.quadTo(988.263794f, 710.65686f, 989.036377f, 709);
    path.lineTo(996.963623f, 692);
    path.quadTo(997.736206f, 690.34314f, 999.454102f, 689.17157f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(998.828857f, 688);
    pathB.lineTo(1013.82886f, 688);
    pathB.lineTo(1002.17114f, 713);
    pathB.lineTo(987.171143f, 713);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_vantageproduction_com_109(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(794.514709f, 759.485291f);
    path.quadTo(791, 755.970581f, 791, 751);
    path.lineTo(1133, 751);
    path.quadTo(1133, 755.970581f, 1129.48523f, 759.485291f);
    path.quadTo(1125.97058f, 763, 1121, 763);
    path.lineTo(803, 763);
    path.quadTo(798.029419f, 763, 794.514709f, 759.485291f);
    path.close();
    path.moveTo(793, 752);
    path.lineTo(1131, 752);
    path.quadTo(1131, 755.727905f, 1128.36401f, 758.363953f);
    path.quadTo(1125.72791f, 761, 1122, 761);
    path.lineTo(802, 761);
    path.quadTo(798.272095f, 761, 795.636047f, 758.363953f);
    path.quadTo(793, 755.727905f, 793, 752);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(791, 751);
    pathB.lineTo(792, 751);
    pathB.lineTo(804.01001f, 763);
    pathB.lineTo(791, 763);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_aceinfographics_com_106(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(166.878677f, 7638.87891f);
    path.quadTo(166, 7639.75732f, 166, 7641);
    path.lineTo(166, 11577);
    path.quadTo(166, 11578.2422f, 166.878677f, 11579.1211f);
    path.quadTo(167.388f, 11579.6309f, 168.019989f, 11579.8447f);
    path.lineTo(168.019974f, 11576.2979f);
    path.quadTo(168, 11576.1533f, 168, 11576);
    path.lineTo(168, 7642);
    path.lineTo(168.000015f, 7641.99316f);
    path.lineTo(168, 7640);
    path.lineTo(166.878677f, 7638.87891f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(166, 7638);
    pathB.lineTo(168.020004f, 7635.97998f);
    pathB.lineTo(168, 11578);
    pathB.lineTo(166, 11580);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_tcmevents_org_13(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(465.951904f, 547.960144f);
    path.quadTo(465.66571f, 546.867371f, 465.404938f, 546);
    path.lineTo(465.504089f, 546);
    path.quadTo(465.670349f, 546.601257f, 465.84668f, 547.288391f);
    path.quadTo(467.274506f, 552.852356f, 468.506836f, 560.718567f);
    path.quadTo(467.336121f, 553.24585f, 465.951904f, 547.960144f);
    path.close();
    path.moveTo(470.591064f, 574.024353f);
    path.quadTo(474.844055f, 601.176025f, 471.728271f, 620.364502f);
    path.quadTo(470.567017f, 627.515991f, 468.635742f, 632);
    path.lineTo(469.106812f, 632);
    path.quadTo(470.791504f, 627.638672f, 471.833496f, 621.036255f);
    path.quadTo(474.905701f, 601.569519f, 470.591064f, 574.024353f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(322.992462f, 541.475708f);
    pathB.lineTo(465.531616f, 541.724426f);
    pathB.lineTo(468.507751f, 560.724426f);
    pathB.lineTo(325.968597f, 560.475708f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_paseoitaigara_com_br_56(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(633.147217f, 1247);
    path.lineTo(718, 1162.14722f);
    path.lineTo(802.852783f, 1247);
    path.lineTo(718, 1331.85278f);
    path.lineTo(633.147217f, 1247);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(635.268494f, 1244.87866f);
    pathB.lineTo(715.878662f, 1164.26855f);
    pathB.quadTo(716.757385f, 1163.38989f, 718, 1163.38989f);
    pathB.quadTo(719.242615f, 1163.38989f, 720.121338f, 1164.26855f);
    pathB.lineTo(800.731506f, 1244.87866f);
    pathB.quadTo(801.610168f, 1245.75732f, 801.610168f, 1247);
    pathB.quadTo(801.610229f, 1248.24268f, 800.731445f, 1249.12134f);
    pathB.lineTo(720.121338f, 1329.73145f);
    pathB.quadTo(719.242676f, 1330.61011f, 718, 1330.61011f);
    pathB.quadTo(716.757385f, 1330.61011f, 715.878723f, 1329.73145f);
    pathB.lineTo(635.268555f, 1249.12134f);
    pathB.quadTo(634.389832f, 1248.24268f, 634.389832f, 1247);
    pathB.quadTo(634.389832f, 1245.75732f, 635.268494f, 1244.87866f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_mortgagemarketguide_com_109(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(816.514709f, 781.485291f);
    path.quadTo(813, 777.970581f, 813, 773);
    path.lineTo(1133, 773);
    path.quadTo(1133, 777.970581f, 1129.48523f, 781.485291f);
    path.quadTo(1125.97058f, 785, 1121, 785);
    path.lineTo(825, 785);
    path.quadTo(820.029419f, 785, 816.514709f, 781.485291f);
    path.close();
    path.moveTo(815, 774);
    path.lineTo(1131, 774);
    path.quadTo(1131, 777.727905f, 1128.36401f, 780.363953f);
    path.quadTo(1125.72791f, 783, 1122, 783);
    path.lineTo(824, 783);
    path.quadTo(820.272095f, 783, 817.636047f, 780.363953f);
    path.quadTo(815, 777.727905f, 815, 774);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(813, 773);
    pathB.lineTo(814, 773);
    pathB.lineTo(826.01001f, 785);
    pathB.lineTo(813, 785);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_9to5mac_com_64(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(365, 5101);
    path.lineTo(365, 5082);
    path.lineTo(366, 5083);
    path.lineTo(367, 5092.96631f);
    path.lineTo(367, 5100);
    path.quadTo(367, 5101.50537f, 367.967712f, 5102.61084f);
    path.lineTo(368.278717f, 5105.71045f);
    path.quadTo(367.277618f, 5105.34863f, 366.464478f, 5104.53564f);
    path.quadTo(365, 5103.07129f, 365, 5101);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(365, 5082);
    pathB.lineTo(365.848175f, 5081.15186f);
    pathB.lineTo(368, 5103);
    pathB.lineTo(365, 5106);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_googleventures_com_32(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(725.911682f, 898.767456f);
    path.lineTo(741.232544f, 885.911682f);
    path.lineTo(754.088318f, 901.232544f);
    path.lineTo(738.767456f, 914.088318f);
    path.lineTo(725.911682f, 898.767456f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(728.37677f, 870.59082f);
    pathB.lineTo(754.088257f, 901.232605f);
    pathB.lineTo(738.767395f, 914.088379f);
    pathB.lineTo(713.055908f, 883.446594f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_devbridge_com_22(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(4915, 1523);
    path.quadTo(4887.24756f, 1523, 4867.62402f, 1542.6239f);
    path.quadTo(4848, 1562.24768f, 4848, 1590);
    path.quadTo(4848, 1617.75232f, 4867.62402f, 1637.3761f);
    path.quadTo(4887.24756f, 1657, 4915, 1657);
    path.quadTo(4942.75244f, 1657, 4962.37598f, 1637.3761f);
    path.quadTo(4982, 1617.75232f, 4982, 1590);
    path.quadTo(4982, 1562.24768f, 4962.37598f, 1542.6239f);
    path.quadTo(4942.75244f, 1523, 4915, 1523);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(4981.99902f, 1590);
    pathB.quadTo(4981.99902f, 1617.75232f, 4962.375f, 1637.3761f);
    pathB.quadTo(4942.75146f, 1657, 4914.99902f, 1657);
    pathB.quadTo(4887.24658f, 1657, 4867.62305f, 1637.3761f);
    pathB.quadTo(4847.99902f, 1617.75232f, 4847.99902f, 1590);
    pathB.quadTo(4847.99902f, 1562.24768f, 4867.62305f, 1542.6239f);
    pathB.quadTo(4887.24658f, 1523, 4914.99902f, 1523);
    pathB.quadTo(4942.75146f, 1523, 4962.375f, 1542.6239f);
    pathB.quadTo(4981.99902f, 1562.24768f, 4981.99902f, 1590);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_alamdi_com_3(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(10210.8789f, 5315.87891f);
    path.quadTo(10211.7578f, 5315, 10213, 5315);
    path.lineTo(10230, 5315);
    path.quadTo(10231.2422f, 5315, 10232.1211f, 5315.87891f);
    path.quadTo(10233, 5316.75732f, 10233, 5318);
    path.lineTo(10233, 5338);
    path.quadTo(10233, 5339.24268f, 10232.1211f, 5340.12109f);
    path.quadTo(10231.2422f, 5341, 10230, 5341);
    path.lineTo(10213, 5341);
    path.quadTo(10211.7578f, 5341, 10210.8789f, 5340.12109f);
    path.quadTo(10210, 5339.24268f, 10210, 5338);
    path.lineTo(10210, 5318);
    path.quadTo(10210, 5316.75732f, 10210.8789f, 5315.87891f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kEvenOdd);
    pathB.moveTo(10213, 5315);
    pathB.lineTo(10230, 5315);
    pathB.cubicTo(10231.6572f, 5315, 10233, 5316.34326f, 10233, 5318);
    pathB.lineTo(10233, 5338);
    pathB.cubicTo(10233, 5339.10449f, 10231.6572f, 5340, 10230, 5340);
    pathB.lineTo(10213, 5340);
    pathB.cubicTo(10211.3428f, 5340, 10210, 5339.10449f, 10210, 5338);
    pathB.lineTo(10210, 5318);
    pathB.cubicTo(10210, 5316.34326f, 10211.3428f, 5315, 10213, 5315);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_familysurvivalprotocol_wordpress_com_61(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(143, 14557);
    path.lineTo(165, 14557);
    path.lineTo(165, 14555.9902f);
    path.lineTo(143, 14556);
    path.lineTo(143, 14557);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(143, 14557);
    pathB.lineTo(143, 14555.9902f);
    pathB.lineTo(165, 14556);
    pathB.lineTo(165, 14557);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_firstunitedbank_com_19(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(808.585815f, 11673.5859f);
    path.quadTo(809.17157f, 11673, 810, 11673);
    path.lineTo(1032, 11673);
    path.quadTo(1038.21326f, 11673, 1042.60657f, 11677.3936f);
    path.quadTo(1047, 11681.7871f, 1047, 11688);
    path.quadTo(1047, 11682.2012f, 1042.60657f, 11678.1006f);
    path.quadTo(1038.21326f, 11674, 1032, 11674);
    path.lineTo(810, 11674);
    path.quadTo(809.585815f, 11674, 809.292908f, 11674.293f);
    path.quadTo(809, 11674.5859f, 809, 11675);
    path.lineTo(809, 11701);
    path.quadTo(809, 11701.4141f, 809.292908f, 11701.707f);
    path.quadTo(809.585815f, 11702, 810, 11702);
    path.lineTo(1032, 11702);
    path.quadTo(1038.21326f, 11702, 1042.60657f, 11697.8994f);
    path.quadTo(1047, 11693.7988f, 1047, 11688);
    path.quadTo(1047, 11694.2129f, 1042.60657f, 11698.6064f);
    path.quadTo(1038.21326f, 11703, 1032, 11703);
    path.lineTo(810, 11703);
    path.quadTo(809.17157f, 11703, 808.585815f, 11702.4141f);
    path.quadTo(808, 11701.8281f, 808, 11701);
    path.lineTo(808, 11675);
    path.quadTo(808, 11674.1719f, 808.585815f, 11673.5859f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(808, 11703);
    pathB.lineTo(809.5f, 11701.5f);
    pathB.lineTo(1062.91907f, 11687.0811f);
    pathB.lineTo(1047, 11703);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_shinydemos_com_5(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(205.884888f, 648.203857f);
    path.lineTo(771.570374f, 82.5183716f);
    path.lineTo(1110.98169f, 421.929626f);
    path.lineTo(545.296143f, 987.615112f);
    path.lineTo(205.884888f, 648.203857f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(771.570374f, 82.5183716f);
    pathB.lineTo(1110.98169f, 421.929626f);
    pathB.lineTo(545.296204f, 987.615051f);
    pathB.lineTo(205.884949f, 648.203796f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_lptemp_com_3(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(78.6429825f, 1394.30969f);
    path.quadTo(79.6192932f, 1393.33337f, 81.0000076f, 1393.33337f);
    path.lineTo(341, 1393.33337f);
    path.quadTo(342.380707f, 1393.33337f, 343.357025f, 1394.30969f);
    path.quadTo(344.333344f, 1395.28601f, 344.333344f, 1396.66675f);
    path.lineTo(344.333344f, 1465.66663f);
    path.quadTo(344.333344f, 1467.04736f, 343.357025f, 1468.02368f);
    path.quadTo(342.380707f, 1469, 341, 1469);
    path.lineTo(81.0000076f, 1469);
    path.quadTo(79.6192932f, 1469, 78.6429825f, 1468.02368f);
    path.quadTo(77.6666718f, 1467.04736f, 77.6666718f, 1465.66663f);
    path.lineTo(77.6666718f, 1396.66675f);
    path.quadTo(77.6666718f, 1395.28601f, 78.6429825f, 1394.30969f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kEvenOdd);
    pathB.moveTo(81, 1393.33337f);
    pathB.lineTo(341, 1393.33337f);
    pathB.cubicTo(342.840942f, 1393.33337f, 344.333344f, 1394.82568f, 344.333344f, 1396.66675f);
    pathB.lineTo(344.333344f, 1465.66675f);
    pathB.cubicTo(344.333344f, 1467.32361f, 342.840942f, 1468.66675f, 341, 1468.66675f);
    pathB.lineTo(81, 1468.66675f);
    pathB.cubicTo(79.15905f, 1468.66675f, 77.6666718f, 1467.32361f, 77.6666718f, 1465.66675f);
    pathB.lineTo(77.6666718f, 1396.66675f);
    pathB.cubicTo(77.6666718f, 1394.82568f, 79.15905f, 1393.33337f, 81, 1393.33337f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_shinydemos_com_15(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(1000, 310.947968f);
    path.lineTo(771.570374f, 82.5183716f);
    path.lineTo(205.884888f, 648.203857f);
    path.lineTo(448.68103f, 891);
    path.lineTo(641.911255f, 891);
    path.lineTo(1000, 532.911316f);
    path.lineTo(1000, 310.947968f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);
    pathB.moveTo(771.570374f, 82.5183716f);
    pathB.lineTo(1110.98169f, 421.929626f);
    pathB.lineTo(545.296204f, 987.615051f);
    pathB.lineTo(205.884949f, 648.203796f);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_lptemp_com_5(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(78.6429825f, 3150.97632f);
    path.quadTo(79.6192932f, 3150, 81.0000076f, 3150);
    path.lineTo(341, 3150);
    path.quadTo(342.380707f, 3150, 343.357025f, 3150.97632f);
    path.quadTo(344.333344f, 3151.95264f, 344.333344f, 3153.33325f);
    path.lineTo(344.333344f, 5205.3335f);
    path.quadTo(344.333344f, 5206.71436f, 343.357025f, 5207.69092f);
    path.quadTo(342.380707f, 5208.66699f, 341, 5208.66699f);
    path.lineTo(81.0000076f, 5208.66699f);
    path.quadTo(79.6192932f, 5208.66699f, 78.6429825f, 5207.69092f);
    path.quadTo(77.6666718f, 5206.71436f, 77.6666718f, 5205.3335f);
    path.lineTo(77.6666718f, 3153.33325f);
    path.quadTo(77.6666718f, 3151.95264f, 78.6429825f, 3150.97632f);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kEvenOdd);
    pathB.moveTo(81, 3150);
    pathB.lineTo(341, 3150);
    pathB.cubicTo(342.840942f, 3150, 344.333344f, 3151.49268f, 344.333344f, 3153.3335f);
    pathB.lineTo(344.333344f, 5205.3335f);
    pathB.cubicTo(344.333344f, 5206.99023f, 342.840942f, 5208.3335f, 341, 5208.3335f);
    pathB.lineTo(81, 5208.3335f);
    pathB.cubicTo(79.15905f, 5208.3335f, 77.6666718f, 5206.99023f, 77.6666718f, 5205.3335f);
    pathB.lineTo(77.6666718f, 3153.3335f);
    pathB.cubicTo(77.6666718f, 3151.49268f, 79.15905f, 3150, 81, 3150);
    pathB.close();
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
}

static void skpwww_educationalcraft_com_4a(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
    path.moveTo(941, 1494);
    path.lineTo(941, 1464);
    path.lineTo(985, 1464);
    path.lineTo(985, 1494);
    path.lineTo(941, 1494);
    path.close();
    SkPath pathB;
    pathB.setFillType(SkPathFillType::kWinding);

pathB.moveTo(984.546021f, 1478.31494f);
pathB.cubicTo(984.546021f, 1478.31494f, 984.543213f, 1478.32239f, 984.537598f, 1478.33655f);
pathB.cubicTo(984.419006f, 1478.63477f, 983.044373f, 1481.90405f, 980.026001f, 1481.276f);
pathB.cubicTo(980.026001f, 1481.276f, 980.02594f, 1481.27576f, 980.025879f, 1481.27527f);
pathB.cubicTo(980.018494f, 1481.22131f, 979.602478f, 1478.38831f, 984.546021f, 1478.31494f);
    testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);

}

static void skpwww_woothemes_com_1(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType((SkPathFillType) 1);
path.moveTo(SkBits2Float(0x44472795), SkBits2Float(0x455cdb8d));  // 796.618f, 3533.72f
path.lineTo(SkBits2Float(0x44467c27), SkBits2Float(0x455cdb8d));  // 793.94f, 3533.72f
path.lineTo(SkBits2Float(0x44467c27), SkBits2Float(0x455d055d));  // 793.94f, 3536.34f
path.lineTo(SkBits2Float(0x44472795), SkBits2Float(0x455d055d));  // 796.618f, 3536.34f
path.lineTo(SkBits2Float(0x44472795), SkBits2Float(0x455cdb8d));  // 796.618f, 3533.72f
    SkPath path1(path);
    path.reset();
    path.setFillType((SkPathFillType) 0);
path.moveTo(SkBits2Float(0x4446861c), SkBits2Float(0x455cdb8d));  // 794.095f, 3533.72f
path.cubicTo(SkBits2Float(0x4446a0d8), SkBits2Float(0x455cefbb), SkBits2Float(0x444727a5), SkBits2Float(0x455d055d), SkBits2Float(0x444727a5), SkBits2Float(0x455d055d));  // 794.513f, 3534.98f, 796.619f, 3536.34f, 796.619f, 3536.34f
path.cubicTo(SkBits2Float(0x4446c5b0), SkBits2Float(0x455cf8a4), SkBits2Float(0x444693af), SkBits2Float(0x455cedad), SkBits2Float(0x44467c1b), SkBits2Float(0x455ce4b8));  // 795.089f, 3535.54f, 794.308f, 3534.85f, 793.939f, 3534.29f
path.lineTo(SkBits2Float(0x44467d70), SkBits2Float(0x455ce016));  // 793.96f, 3534.01f
path.cubicTo(SkBits2Float(0x44467fa9), SkBits2Float(0x455cde82), SkBits2Float(0x444682b5), SkBits2Float(0x455cdd03), SkBits2Float(0x4446861c), SkBits2Float(0x455cdb8d));  // 793.995f, 3533.91f, 794.042f, 3533.81f, 794.095f, 3533.72f
    SkPath path2(path);
    testPathOp(reporter, path1, path2, (SkPathOp) 1, filename);
}

static void skpwww_gorcraft_ru_1(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType((SkPathFillType) 1);
path.moveTo(SkBits2Float(0x44924000), SkBits2Float(0x458e7800));  // 1170, 4559
path.conicTo(SkBits2Float(0x44930000), SkBits2Float(0x458e7800), SkBits2Float(0x44930000), SkBits2Float(0x458ea800), SkBits2Float(0x3f3504f3));  // 1176, 4559, 1176, 4565, 0.707107f
path.lineTo(SkBits2Float(0x44930000), SkBits2Float(0x458f7000));  // 1176, 4590
path.conicTo(SkBits2Float(0x44930000), SkBits2Float(0x458f9800), SkBits2Float(0x44926000), SkBits2Float(0x458f9800), SkBits2Float(0x3f3504f3));  // 1176, 4595, 1171, 4595, 0.707107f
path.lineTo(SkBits2Float(0x42a60000), SkBits2Float(0x458f9800));  // 83, 4595
path.conicTo(SkBits2Float(0x429c0471), SkBits2Float(0x458f9800), SkBits2Float(0x429c0000), SkBits2Float(0x458f700c), SkBits2Float(0x3f352d2d));  // 78.0087f, 4595, 78, 4590.01f, 0.707721f
path.lineTo(SkBits2Float(0x429c0000), SkBits2Float(0x458ea800));  // 78, 4565
path.conicTo(SkBits2Float(0x429c0000), SkBits2Float(0x458e7800), SkBits2Float(0x42a80000), SkBits2Float(0x458e7800), SkBits2Float(0x3f3504f3));  // 78, 4559, 84, 4559, 0.707107f
path.lineTo(SkBits2Float(0x44924000), SkBits2Float(0x458e7800));  // 1170, 4559
path.close();
    SkPath path1(path);
    path.reset();
    path.setFillType((SkPathFillType) 0);
path.moveTo(SkBits2Float(0x429c0000), SkBits2Float(0x458f7000));  // 78, 4590
path.lineTo(SkBits2Float(0x429c0000), SkBits2Float(0x458ea800));  // 78, 4565
path.conicTo(SkBits2Float(0x429c0000), SkBits2Float(0x458e7800), SkBits2Float(0x42a80000), SkBits2Float(0x458e7800), SkBits2Float(0x3f3504f3));  // 78, 4559, 84, 4559, 0.707107f
path.lineTo(SkBits2Float(0x431e0000), SkBits2Float(0x458e7800));  // 158, 4559
path.conicTo(SkBits2Float(0x431e0000), SkBits2Float(0x458e7800), SkBits2Float(0x431e0000), SkBits2Float(0x458e7800), SkBits2Float(0x3f3504f3));  // 158, 4559, 158, 4559, 0.707107f
path.lineTo(SkBits2Float(0x431e0000), SkBits2Float(0x458fa000));  // 158, 4596
path.conicTo(SkBits2Float(0x431e0000), SkBits2Float(0x458fa000), SkBits2Float(0x431e0000), SkBits2Float(0x458fa000), SkBits2Float(0x3f3504f3));  // 158, 4596, 158, 4596, 0.707107f
path.lineTo(SkBits2Float(0x42a80000), SkBits2Float(0x458fa000));  // 84, 4596
path.conicTo(SkBits2Float(0x429c0000), SkBits2Float(0x458fa000), SkBits2Float(0x429c0000), SkBits2Float(0x458f7000), SkBits2Float(0x3f3504f3));  // 78, 4596, 78, 4590, 0.707107f
path.close();

    SkPath path2(path);
    testPathOp(reporter, path1, path2, (SkPathOp) 2, filename);
}

static void skpwww_neda_net_1(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType((SkPathFillType) 1);
path.moveTo(SkBits2Float(0x447a0000), SkBits2Float(0x00000000));  // 1000, 0
path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000));  // 0, 0
path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x44b6e000));  // 0, 1463
path.lineTo(SkBits2Float(0x447a0000), SkBits2Float(0x44b6e000));  // 1000, 1463
path.lineTo(SkBits2Float(0x447a0000), SkBits2Float(0x00000000));  // 1000, 0
path.close();
    SkPath path1(path);
    path.reset();
    path.setFillType((SkPathFillType) 0);
path.moveTo(SkBits2Float(0x366a410f), SkBits2Float(0x43a38000));  // 3.49066e-06f, 327
path.lineTo(SkBits2Float(0x447a0000), SkBits2Float(0x43a38001));  // 1000, 327
path.lineTo(SkBits2Float(0x447a0000), SkBits2Float(0x4435c000));  // 1000, 727
path.lineTo(SkBits2Float(0xb66a410d), SkBits2Float(0x4435c000));  // -3.49066e-06f, 727
path.lineTo(SkBits2Float(0x366a410f), SkBits2Float(0x43a38000));  // 3.49066e-06f, 327
path.close();
    SkPath path2(path);
    testPathOp(reporter, path1, path2, (SkPathOp) 1, filename);
}

// "http___www_neda_net.skp" dir=87
static void skpwww_neda_net_2(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType((SkPathFillType) 1);
path.moveTo(SkBits2Float(0x442fc000), SkBits2Float(0x4546a000));  // 703, 3178
path.lineTo(SkBits2Float(0x441f4000), SkBits2Float(0x4546a000));  // 637, 3178
path.lineTo(SkBits2Float(0x441f4000), SkBits2Float(0x454ab000));  // 637, 3243
path.lineTo(SkBits2Float(0x442fc000), SkBits2Float(0x454ab000));  // 703, 3243
path.lineTo(SkBits2Float(0x442fc000), SkBits2Float(0x4546a000));  // 703, 3178
path.close();
    SkPath path1(path);
    path.reset();
    path.setFillType((SkPathFillType) 0);
path.moveTo(SkBits2Float(0x44220e6e), SkBits2Float(0x45469c4c));  // 648.225f, 3177.77f
path.lineTo(SkBits2Float(0x442fc01c), SkBits2Float(0x45475696));  // 703.002f, 3189.41f
path.lineTo(SkBits2Float(0x442cf191), SkBits2Float(0x454aa3b5));  // 691.774f, 3242.23f
path.lineTo(SkBits2Float(0x441f3fe3), SkBits2Float(0x4549e96b));  // 636.998f, 3230.59f
path.lineTo(SkBits2Float(0x44220e6e), SkBits2Float(0x45469c4c));  // 648.225f, 3177.77f
path.close();
    SkPath path2(path);
    testPathOp(reporter, path1, path2, (SkPathOp) 1, filename);
}

static void skpwww_mybuilder_com_1(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
path.setFillType(SkPathFillType::kEvenOdd);
path.moveTo(1000, 659);
path.lineTo(1000, 377);
path.lineTo(455, 377);
path.lineTo(455, 659);
path.lineTo(1000, 659);
path.close();
    SkPath path1(path);
    path.reset();
    path.setFillType(SkPathFillType::kEvenOdd);
path.moveTo(921.472f, 414.086f);
path.lineTo(968.815f, 386.754f);
path.lineTo(993.069f, 428.761f);
path.lineTo(945.726f, 456.096f);
path.lineTo(921.471f, 414.086f);
path.lineTo(921.472f, 414.086f);
path.close();
path.moveTo(971.151f, 422.889f);
path.cubicTo(966.509f, 414.848f, 957.649f, 411.727f, 950.181f, 416.038f);
path.lineTo(947.224f, 417.746f);
path.lineTo(946.979f, 417.887f);
path.lineTo(947.838f, 419.371f);
path.lineTo(947.844f, 419.367f);
path.lineTo(947.868f, 419.353f);
path.lineTo(947.945f, 419.309f);
path.cubicTo(947.988f, 419.285f, 947.988f, 419.285f, 948.023f, 419.263f);
path.cubicTo(948.039f, 419.255f, 948.039f, 419.255f, 948.047f, 419.25f);
path.lineTo(948.052f, 419.247f);
path.lineTo(947.196f, 417.762f);
path.lineTo(947.195f, 417.762f);
path.lineTo(946.888f, 417.939f);
path.lineTo(943.39f, 419.959f);
path.lineTo(944.249f, 421.443f);
path.lineTo(947.745f, 419.424f);
path.lineTo(948.05f, 419.247f);
path.lineTo(948.052f, 419.247f);
path.lineTo(947.195f, 417.763f);
path.cubicTo(947.193f, 417.763f, 947.193f, 417.763f, 947.19f, 417.766f);
path.lineTo(947.166f, 417.779f);
path.lineTo(947.087f, 417.825f);
path.lineTo(947.011f, 417.868f);
path.lineTo(946.987f, 417.883f);
path.lineTo(946.982f, 417.886f);
path.lineTo(946.98f, 417.886f);
path.lineTo(947.839f, 419.37f);
path.lineTo(948.083f, 419.229f);
path.lineTo(951.039f, 417.522f);
path.cubicTo(957.631f, 413.716f, 965.471f, 416.477f, 969.669f, 423.746f);
path.lineTo(971.153f, 422.889f);
path.lineTo(971.151f, 422.889f);
path.close();
    SkPath path2(path);
    testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
}

static void skpwww_nimble_com_au_1(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
path.setFillType(SkPathFillType::kEvenOdd);
path.moveTo(188.6f, 1988.8f);
path.lineTo(188.6f, 2041.6f);
path.cubicTo(188.6f, 2065.4f, 208, 2084.8f, 231.8f, 2084.8f);
path.cubicTo(255.6f, 2084.8f, 275, 2065.4f, 275, 2041.6f);
path.lineTo(275.2f, 2041.6f);
path.lineTo(275.2f, 1988.8f);
path.lineTo(188.6f, 1988.8f);
path.close();
    SkPath path1(path);
    path.reset();
path.setFillType(SkPathFillType::kWinding);
path.moveTo(275, 2041.6f);
path.conicTo(275, 2084.8f, 231.8f, 2084.8f, 0.707107f);
path.conicTo(188.6f, 2084.8f, 188.6f, 2041.6f, 0.707107f);
path.conicTo(188.6f, 1998.4f, 231.8f, 1998.4f, 0.707107f);
path.conicTo(275, 1998.4f, 275, 2041.6f, 0.707107f);
path.close();
    SkPath path2(path);
    testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
}

static void skpwww_tinytots_com_1(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
path.setFillType(SkPathFillType::kEvenOdd);
path.moveTo(75.96f, 26.318f);
path.lineTo(70.337f, 26.318f);
path.lineTo(70.337f, 32.376f);
path.lineTo(75.96f, 32.376f);
path.lineTo(75.96f, 26.318f);
path.close();
    SkPath path1(path);
    path.reset();
path.setFillType(SkPathFillType::kWinding);
path.moveTo(75.88f, 27.873f);
path.cubicTo(75.929f, 28.138f, 75.956f, 29.196f, 75.96f, 31.046f);
path.lineTo(72.766f, 32.376f);
path.cubicTo(72.763f, 30.525f, 72.735f, 29.468f, 72.686f, 29.203f);
path.cubicTo(72.636f, 28.94f, 72.519f, 28.722f, 72.335f, 28.552f);
path.cubicTo(72.248f, 28.472f, 72.058f, 28.364f, 71.763f, 28.228f);
path.cubicTo(72.425f, 27.933f, 72.425f, 27.933f, 73.395f, 27.498f);
path.cubicTo(72.425f, 27.933f, 72.425f, 27.933f, 71.763f, 28.228f);
path.cubicTo(71.425f, 28.072f, 70.95f, 27.878f, 70.337f, 27.647f);
path.lineTo(73.531f, 26.317f);
path.cubicTo(74.144f, 26.547f, 74.619f, 26.741f, 74.957f, 26.898f);
path.cubicTo(74.475f, 27.113f, 73.993f, 27.329f, 73.511f, 27.544f);
path.cubicTo(73.993f, 27.329f, 74.475f, 27.114f, 74.957f, 26.898f);
path.cubicTo(75.252f, 27.034f, 75.442f, 27.142f, 75.529f, 27.222f);
path.cubicTo(75.713f, 27.393f, 75.83f, 27.61f, 75.88f, 27.873f);
    SkPath path2(path);
    testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
}

static void http___www_emuleteca_cl_26(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType((SkPathFillType) 1);
path.moveTo(SkBits2Float(0x3f800000), SkBits2Float(0x44370000));  // 1, 732
path.conicTo(SkBits2Float(0x3f800000), SkBits2Float(0x4428c000), SkBits2Float(0x42680000), SkBits2Float(0x4428c000), SkBits2Float(0x3f3504f3));  // 1, 675, 58, 675, 0.707107f
path.conicTo(SkBits2Float(0x40400000), SkBits2Float(0x4428c000), SkBits2Float(0x40400000), SkBits2Float(0x44370000), SkBits2Float(0x3f3504f3));  // 3, 675, 3, 732, 0.707107f
path.conicTo(SkBits2Float(0x40400000), SkBits2Float(0x44444000), SkBits2Float(0x42680000), SkBits2Float(0x44444000), SkBits2Float(0x3f3504f3));  // 3, 785, 58, 785, 0.707107f
path.lineTo(SkBits2Float(0x446d0000), SkBits2Float(0x44444000));  // 948, 785
path.conicTo(SkBits2Float(0x447ac000), SkBits2Float(0x44444000), SkBits2Float(0x447ac000), SkBits2Float(0x44370000), SkBits2Float(0x3f3504f3));  // 1003, 785, 1003, 732, 0.707107f
path.conicTo(SkBits2Float(0x447ac000), SkBits2Float(0x4428c000), SkBits2Float(0x446d0000), SkBits2Float(0x4428c000), SkBits2Float(0x3f3504f3));  // 1003, 675, 948, 675, 0.707107f
path.conicTo(SkBits2Float(0x447b4000), SkBits2Float(0x4428c000), SkBits2Float(0x447b4000), SkBits2Float(0x44370000), SkBits2Float(0x3f3504f3));  // 1005, 675, 1005, 732, 0.707107f
path.conicTo(SkBits2Float(0x447b4000), SkBits2Float(0x44454000), SkBits2Float(0x446d0000), SkBits2Float(0x44454000), SkBits2Float(0x3f3504f3));  // 1005, 789, 948, 789, 0.707107f
path.lineTo(SkBits2Float(0x42680000), SkBits2Float(0x44454000));  // 58, 789
path.conicTo(SkBits2Float(0x3f800000), SkBits2Float(0x44454000), SkBits2Float(0x3f800000), SkBits2Float(0x44370000), SkBits2Float(0x3f3504f3));  // 1, 789, 1, 732, 0.707107f
path.close();

    SkPath path1(path);
    path.reset();
    path.setFillType((SkPathFillType) 0);
path.moveTo(SkBits2Float(0x3f800000), SkBits2Float(0x4428c000));  // 1, 675
path.lineTo(SkBits2Float(0x42680000), SkBits2Float(0x4428c000));  // 58, 675
path.lineTo(SkBits2Float(0x3fc8f676), SkBits2Float(0x44454000));  // 1.57002f, 789
path.lineTo(SkBits2Float(0x3f800000), SkBits2Float(0x44454000));  // 1, 789

    SkPath path2(path);
    testPathOp(reporter, path1, path2, (SkPathOp) 1, filename);
}

static void http___www_emuleteca_cl_27(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType((SkPathFillType) 1);
path.moveTo(SkBits2Float(0x42680000), SkBits2Float(0x4428c000));  // 58, 675
path.conicTo(SkBits2Float(0x3f800000), SkBits2Float(0x4428c000), SkBits2Float(0x3f800000), SkBits2Float(0x44370000), SkBits2Float(0x3f3504f3));  // 1, 675, 1, 732, 0.707107f
path.conicTo(SkBits2Float(0x3f800000), SkBits2Float(0x443bd045), SkBits2Float(0x414acf56), SkBits2Float(0x443fa420), SkBits2Float(0x3f778612));  // 1, 751.254f, 12.6756f, 766.564f, 0.96689f
path.lineTo(SkBits2Float(0x41606e3d), SkBits2Float(0x443ef569));  // 14.0269f, 763.835f
path.conicTo(SkBits2Float(0x40400000), SkBits2Float(0x443b6c34), SkBits2Float(0x40400000), SkBits2Float(0x44370000), SkBits2Float(0x3f77ac46));  // 3, 749.691f, 3, 732, 0.967472f
path.conicTo(SkBits2Float(0x40400000), SkBits2Float(0x4428c000), SkBits2Float(0x42680000), SkBits2Float(0x4428c000), SkBits2Float(0x3f3504f3));  // 3, 675, 58, 675, 0.707107f
path.close();

    SkPath path1(path);
    path.reset();
    path.setFillType((SkPathFillType) 0);
path.moveTo(SkBits2Float(0x3f800000), SkBits2Float(0x4428c000));  // 1, 675
path.lineTo(SkBits2Float(0x4c4a3de6), SkBits2Float(0xccca3d89));  // 5.30165e+07f, -1.06032e+08f
path.lineTo(SkBits2Float(0x41a71147), SkBits2Float(0x443b4eec));  // 20.8834f, 749.233f
path.lineTo(SkBits2Float(0x3f800000), SkBits2Float(0x44454000));  // 1, 789

    SkPath path2(path);
    testPathOp(reporter, path1, path2, (SkPathOp) 1, filename);
}

static void http___www_emuleteca_cl_28(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);

    SkPath path1(path);
    path.reset();
    path.setFillType(SkPathFillType::kWinding);
path.moveTo(SkBits2Float(0x3f800000), SkBits2Float(0x4428c000));  // 1, 675
path.lineTo(SkBits2Float(0x4c4a3de6), SkBits2Float(0xccca3d89));  // 5.30165e+07f, -1.06032e+08f
path.lineTo(SkBits2Float(0x41a71147), SkBits2Float(0x443b4eec));  // 20.8834f, 749.233f
path.lineTo(SkBits2Float(0x3f800000), SkBits2Float(0x44454000));  // 1, 789
    SkPath path2(path);
    testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
}

static void http___www_project2061_org(skiatest::Reporter* reporter, const char* filename) {
    SkPath path;
    path.setFillType(SkPathFillType::kEvenOdd);
path.moveTo(751, 62);
path.lineTo(497, 62);
path.lineTo(497, 138);
path.lineTo(751, 138);
path.lineTo(751, 62);
path.close();
    SkPath path1(path);
    path.reset();
    path.setFillType(SkPathFillType::kWinding);
path.moveTo(699.889f, 115.29f);
path.cubicTo(699.889f, 114.913f, 699.627f, 114.723f, 699.111f, 114.723f);
path.cubicTo(698.604f, 114.723f, 697.843f, 114.671f, 697.096f, 114.423f);
path.cubicTo(695.94f, 114.094f, 694.53f, 113.168f, 692.746f, 108.775f);
path.cubicTo(690.469f, 103.12f, 685.644f, 90.563f, 682.761f, 83.061f);
path.lineTo(680.541f, 77.301f);
path.cubicTo(679.927f, 75.721f, 679.67f, 75.261f, 679.151f, 75.261f);
path.cubicTo(678.636f, 75.261f, 678.392f, 75.73f, 677.759f, 77.464f);
path.lineTo(665.868f, 109.881f);
path.cubicTo(664.861f, 112.669f, 663.852f, 114.339f, 661.675f, 114.622f);
path.cubicTo(661.675f, 114.622f, 661.551f, 114.631f, 661.378f, 114.642f);
path.cubicTo(661.072f, 114.597f, 660.75f, 114.531f, 660.427f, 114.424f);
path.cubicTo(659.272f, 114.095f, 657.861f, 113.169f, 656.078f, 108.776f);
path.cubicTo(653.797f, 103.112f, 648.967f, 90.541f, 646.08f, 83.029f);
path.lineTo(643.873f, 77.302f);
path.cubicTo(643.259f, 75.722f, 643.002f, 75.262f, 642.484f, 75.262f);
path.cubicTo(641.968f, 75.262f, 641.724f, 75.731f, 641.092f, 77.465f);
path.lineTo(629.2f, 109.879f);
path.cubicTo(628.193f, 112.667f, 627.184f, 114.337f, 625.007f, 114.62f);
path.cubicTo(625.007f, 114.62f, 624.884f, 114.629f, 624.71f, 114.64f);
path.cubicTo(624.404f, 114.595f, 624.081f, 114.529f, 623.759f, 114.422f);
path.cubicTo(622.603f, 114.093f, 621.193f, 113.167f, 619.409f, 108.774f);
path.cubicTo(617.132f, 103.119f, 612.307f, 90.562f, 609.424f, 83.06f);
path.lineTo(607.204f, 77.3f);
path.cubicTo(606.59f, 75.72f, 606.333f, 75.26f, 605.815f, 75.26f);
path.cubicTo(605.3f, 75.26f, 605.055f, 75.729f, 604.423f, 77.463f);
path.lineTo(592.531f, 109.879f);
path.cubicTo(591.524f, 112.667f, 590.514f, 114.337f, 588.338f, 114.62f);
path.cubicTo(588.337f, 114.62f, 586.852f, 114.722f, 586.852f, 114.722f);
path.cubicTo(586.418f, 114.722f, 586.126f, 114.95f, 586.126f, 115.289f);
path.cubicTo(586.126f, 115.96f, 586.97f, 115.96f, 587.376f, 115.96f);
path.lineTo(592.101f, 115.843f);
path.lineTo(593.295f, 115.804f);
path.lineTo(594.624f, 115.86f);
path.lineTo(597.381f, 115.961f);
path.cubicTo(598.241f, 115.961f, 598.422f, 115.596f, 598.422f, 115.29f);
path.cubicTo(598.422f, 115.078f, 598.321f, 114.723f, 597.643f, 114.723f);
path.lineTo(597.119f, 114.723f);
path.cubicTo(596.448f, 114.723f, 595.383f, 114.381f, 595.383f, 113.463f);
path.cubicTo(595.383f, 112.545f, 595.638f, 111.334f, 596.101f, 110.052f);
path.cubicTo(596.103f, 110.048f, 599.246f, 100.809f, 599.246f, 100.809f);
path.cubicTo(599.337f, 100.583f, 599.435f, 100.564f, 599.528f, 100.564f);
path.lineTo(610.791f, 100.564f);
path.cubicTo(610.929f, 100.564f, 610.958f, 100.585f, 611.035f, 100.737f);
path.cubicTo(611.035f, 100.741f, 615.896f, 113.554f, 615.896f, 113.554f);
path.cubicTo(615.972f, 113.754f, 616.01f, 113.942f, 616.01f, 114.105f);
path.cubicTo(616.01f, 114.228f, 615.988f, 114.338f, 615.945f, 114.429f);
path.cubicTo(615.876f, 114.573f, 615.779f, 114.619f, 615.741f, 114.631f);
path.cubicTo(615.272f, 114.748f, 615.2f, 115.061f, 615.2f, 115.237f);
path.cubicTo(615.2f, 115.766f, 615.792f, 115.796f, 616.772f, 115.844f);
path.lineTo(617.012f, 115.857f);
path.cubicTo(618.978f, 115.913f, 621.359f, 115.948f, 623.835f, 115.958f);
path.cubicTo(623.912f, 115.961f, 623.984f, 115.961f, 624.045f, 115.961f);
path.lineTo(624.118f, 115.959f);
path.cubicTo(624.494f, 115.961f, 624.871f, 115.961f, 625.25f, 115.961f);
path.cubicTo(625.47f, 115.961f, 625.662f, 115.946f, 625.827f, 115.917f);
path.lineTo(628.77f, 115.844f);
path.lineTo(629.965f, 115.805f);
path.lineTo(631.293f, 115.861f);
path.lineTo(634.051f, 115.962f);
path.cubicTo(634.911f, 115.962f, 635.092f, 115.597f, 635.092f, 115.291f);
path.cubicTo(635.092f, 115.079f, 634.991f, 114.724f, 634.313f, 114.724f);
path.lineTo(633.789f, 114.724f);
path.cubicTo(633.118f, 114.724f, 632.053f, 114.382f, 632.053f, 113.464f);
path.cubicTo(632.053f, 112.546f, 632.308f, 111.335f, 632.771f, 110.053f);
path.cubicTo(632.773f, 110.049f, 635.916f, 100.81f, 635.916f, 100.81f);
path.cubicTo(636.007f, 100.584f, 636.105f, 100.565f, 636.198f, 100.565f);
path.lineTo(647.46f, 100.565f);
path.cubicTo(647.598f, 100.565f, 647.627f, 100.586f, 647.704f, 100.737f);
path.cubicTo(647.704f, 100.741f, 652.565f, 113.554f, 652.565f, 113.554f);
path.cubicTo(652.641f, 113.754f, 652.679f, 113.942f, 652.679f, 114.105f);
path.cubicTo(652.679f, 114.228f, 652.657f, 114.338f, 652.613f, 114.43f);
path.cubicTo(652.544f, 114.574f, 652.447f, 114.619f, 652.409f, 114.632f);
path.cubicTo(651.94f, 114.749f, 651.868f, 115.062f, 651.868f, 115.238f);
path.cubicTo(651.868f, 115.767f, 652.46f, 115.797f, 653.44f, 115.845f);
path.lineTo(653.681f, 115.858f);
path.cubicTo(655.647f, 115.914f, 658.028f, 115.949f, 660.503f, 115.959f);
path.cubicTo(660.58f, 115.962f, 660.652f, 115.962f, 660.713f, 115.962f);
path.lineTo(660.787f, 115.96f);
path.cubicTo(661.162f, 115.962f, 661.54f, 115.962f, 661.918f, 115.962f);
path.cubicTo(662.139f, 115.962f, 662.33f, 115.947f, 662.496f, 115.918f);
path.lineTo(665.439f, 115.845f);
path.lineTo(666.633f, 115.806f);
path.lineTo(667.962f, 115.862f);
path.lineTo(670.719f, 115.963f);
path.cubicTo(671.579f, 115.963f, 671.76f, 115.598f, 671.76f, 115.292f);
path.cubicTo(671.76f, 115.08f, 671.659f, 114.725f, 670.981f, 114.725f);
path.lineTo(670.457f, 114.725f);
path.cubicTo(669.786f, 114.725f, 668.721f, 114.383f, 668.721f, 113.465f);
path.cubicTo(668.721f, 112.547f, 668.976f, 111.336f, 669.439f, 110.054f);
path.cubicTo(669.441f, 110.05f, 672.584f, 100.811f, 672.584f, 100.811f);
path.cubicTo(672.675f, 100.585f, 672.773f, 100.566f, 672.866f, 100.566f);
path.lineTo(684.128f, 100.566f);
path.cubicTo(684.266f, 100.566f, 684.295f, 100.587f, 684.372f, 100.739f);
path.cubicTo(684.372f, 100.743f, 689.233f, 113.556f, 689.233f, 113.556f);
path.cubicTo(689.309f, 113.756f, 689.347f, 113.944f, 689.347f, 114.107f);
path.cubicTo(689.347f, 114.23f, 689.325f, 114.34f, 689.281f, 114.431f);
path.cubicTo(689.212f, 114.575f, 689.115f, 114.621f, 689.077f, 114.633f);
path.cubicTo(688.608f, 114.75f, 688.536f, 115.063f, 688.536f, 115.239f);
path.cubicTo(688.536f, 115.768f, 689.128f, 115.798f, 690.108f, 115.846f);
path.lineTo(690.348f, 115.859f);
path.cubicTo(692.687f, 115.926f, 695.611f, 115.963f, 698.586f, 115.963f);
path.cubicTo(699.451f, 115.961f, 699.889f, 115.735f, 699.889f, 115.29f);
path.close();
path.moveTo(600.18f, 98.176f);
path.cubicTo(600.181f, 98.171f, 600.185f, 98.158f, 600.185f, 98.158f);
path.cubicTo(600.191f, 98.142f, 604.801f, 84.049f, 604.801f, 84.049f);
path.cubicTo(604.865f, 83.857f, 604.915f, 83.756f, 604.951f, 83.697f);
path.cubicTo(604.987f, 83.756f, 605.037f, 83.858f, 605.102f, 84.051f);
path.cubicTo(605.103f, 84.054f, 610.08f, 98.149f, 610.08f, 98.149f);
path.cubicTo(610.079f, 98.145f, 610.079f, 98.145f, 610.079f, 98.147f);
path.cubicTo(610.079f, 98.149f, 610.081f, 98.164f, 610.083f, 98.176f);
path.lineTo(600.18f, 98.176f);
path.close();
path.moveTo(636.849f, 98.176f);
path.cubicTo(636.851f, 98.171f, 636.854f, 98.158f, 636.854f, 98.158f);
path.cubicTo(636.859f, 98.142f, 641.469f, 84.049f, 641.469f, 84.049f);
path.cubicTo(641.533f, 83.857f, 641.584f, 83.756f, 641.62f, 83.697f);
path.cubicTo(641.656f, 83.756f, 641.706f, 83.857f, 641.771f, 84.051f);
path.cubicTo(641.773f, 84.054f, 646.749f, 98.149f, 646.749f, 98.149f);
path.cubicTo(646.749f, 98.145f, 646.748f, 98.145f, 646.748f, 98.147f);
path.cubicTo(646.748f, 98.15f, 646.75f, 98.165f, 646.751f, 98.176f);
path.lineTo(636.849f, 98.176f);
path.close();
path.moveTo(673.517f, 98.176f);
path.cubicTo(673.519f, 98.171f, 673.522f, 98.158f, 673.522f, 98.158f);
path.cubicTo(673.528f, 98.142f, 678.138f, 84.049f, 678.138f, 84.049f);
path.cubicTo(678.202f, 83.857f, 678.252f, 83.756f, 678.288f, 83.697f);
path.cubicTo(678.324f, 83.756f, 678.375f, 83.858f, 678.439f, 84.051f);
path.cubicTo(678.44f, 84.054f, 683.417f, 98.149f, 683.417f, 98.149f);
path.cubicTo(683.416f, 98.145f, 683.416f, 98.145f, 683.416f, 98.147f);
path.cubicTo(683.416f, 98.149f, 683.418f, 98.164f, 683.42f, 98.176f);
path.lineTo(673.517f, 98.176f);
path.close();
path.moveTo(702.086f, 115.256f);
path.lineTo(702.089f, 115.257f);
path.cubicTo(704.075f, 116.223f, 706.408f, 116.692f, 709.22f, 116.692f);
path.cubicTo(712.384f, 116.692f, 715.17f, 115.918f, 717.275f, 114.454f);
path.cubicTo(720.639f, 112.074f, 721.837f, 108.31f, 721.837f, 105.581f);
path.cubicTo(721.837f, 101.538f, 720.57f, 98.203f, 714.092f, 93.115f);
path.lineTo(712.625f, 91.966f);
path.cubicTo(707.567f, 87.838f, 706.331f, 86.155f, 706.331f, 83.396f);
path.cubicTo(706.331f, 79.927f, 708.819f, 77.595f, 712.519f, 77.595f);
path.cubicTo(716.925f, 77.595f, 718.41f, 79.437f, 718.843f, 80.229f);
path.cubicTo(719.131f, 80.754f, 719.442f, 82.122f, 719.494f, 82.739f);
path.cubicTo(719.543f, 83.13f, 719.608f, 83.65f, 720.167f, 83.65f);
path.cubicTo(720.789f, 83.65f, 720.789f, 82.704f, 720.789f, 82.195f);
path.cubicTo(720.789f, 79.413f, 720.918f, 77.758f, 720.973f, 77.052f);
path.lineTo(720.998f, 76.662f);
path.cubicTo(720.998f, 76.113f, 720.581f, 76.043f, 720.219f, 76.043f);
path.cubicTo(719.847f, 76.043f, 719.469f, 76.003f, 718.438f, 75.788f);
path.cubicTo(716.936f, 75.428f, 715.369f, 75.26f, 713.514f, 75.26f);
path.cubicTo(706.771f, 75.26f, 702.415f, 79.048f, 702.415f, 84.91f);
path.cubicTo(702.415f, 88.438f, 703.589f, 91.748f, 709.319f, 96.434f);
path.lineTo(711.676f, 98.365f);
path.cubicTo(716.332f, 102.196f, 717.607f, 104.172f, 717.607f, 107.564f);
path.cubicTo(717.607f, 110.888f, 715.121f, 114.253f, 710.371f, 114.253f);
path.cubicTo(708.428f, 114.253f, 703.808f, 113.754f, 702.868f, 109.132f);
path.cubicTo(702.716f, 108.424f, 702.716f, 107.718f, 702.716f, 107.25f);
path.cubicTo(702.716f, 106.94f, 702.716f, 106.422f, 702.094f, 106.422f);
path.cubicTo(701.519f, 106.422f, 701.455f, 107.116f, 701.421f, 107.488f);
path.cubicTo(701.421f, 107.495f, 701.375f, 108.117f, 701.375f, 108.117f);
path.cubicTo(701.293f, 109.171f, 701.158f, 110.933f, 701.158f, 113.044f);
path.cubicTo(701.16f, 114.432f, 701.197f, 114.813f, 702.086f, 115.256f);
path.close();
path.moveTo(501.274f, 129.973f);
path.lineTo(498.058f, 136.963f);
path.lineTo(498.62f, 136.963f);
path.lineTo(499.723f, 134.561f);
path.lineTo(503.124f, 134.561f);
path.lineTo(504.227f, 136.963f);
path.lineTo(504.788f, 136.963f);
path.lineTo(501.571f, 129.973f);
path.lineTo(501.274f, 129.973f);
path.close();
path.moveTo(499.926f, 134.114f);
path.lineTo(501.417f, 130.848f);
path.lineTo(502.918f, 134.114f);
path.lineTo(499.926f, 134.114f);
path.close();
path.moveTo(510.117f, 130.023f);
path.lineTo(507.677f, 130.023f);
path.lineTo(507.677f, 136.963f);
path.lineTo(510.209f, 136.963f);
path.cubicTo(512.966f, 136.963f, 513.916f, 135.101f, 513.916f, 133.493f);
path.cubicTo(513.916f, 131.967f, 513.078f, 130.023f, 510.117f, 130.023f);
path.close();
path.moveTo(510.178f, 136.515f);
path.lineTo(508.217f, 136.515f);
path.lineTo(508.217f, 130.471f);
path.lineTo(510.147f, 130.471f);
path.cubicTo(512.036f, 130.471f, 513.333f, 131.712f, 513.333f, 133.493f);
path.cubicTo(513.333f, 135.447f, 511.853f, 136.515f, 510.178f, 136.515f);
path.close();
path.moveTo(519.105f, 135.894f);
path.lineTo(516.634f, 130.023f);
path.lineTo(516.093f, 130.023f);
path.lineTo(519.024f, 137.034f);
path.lineTo(519.177f, 137.034f);
path.lineTo(522.098f, 130.023f);
path.lineTo(521.557f, 130.023f);
path.lineTo(519.105f, 135.894f);
path.close();
path.moveTo(526.817f, 129.973f);
path.lineTo(523.601f, 136.963f);
path.lineTo(524.162f, 136.963f);
path.lineTo(525.265f, 134.561f);
path.lineTo(528.665f, 134.561f);
path.lineTo(529.768f, 136.963f);
path.lineTo(530.33f, 136.963f);
path.lineTo(527.113f, 129.973f);
path.lineTo(526.817f, 129.973f);
path.close();
path.moveTo(525.469f, 134.114f);
path.lineTo(526.96f, 130.848f);
path.lineTo(528.461f, 134.114f);
path.lineTo(525.469f, 134.114f);
path.close();
path.moveTo(538.947f, 136.088f);
path.lineTo(533.668f, 130.024f);
path.lineTo(533.208f, 130.024f);
path.lineTo(533.208f, 136.964f);
path.lineTo(533.749f, 136.964f);
path.lineTo(533.749f, 130.899f);
path.lineTo(539.038f, 136.964f);
path.lineTo(539.487f, 136.964f);
path.lineTo(539.487f, 130.024f);
path.lineTo(538.946f, 130.024f);
path.lineTo(538.946f, 136.088f);
path.lineTo(538.947f, 136.088f);
path.close();
path.moveTo(543.41f, 133.503f);
path.cubicTo(543.41f, 131.743f, 544.717f, 130.43f, 546.453f, 130.43f);
path.cubicTo(547.28f, 130.43f, 548.067f, 130.644f, 548.934f, 131.102f);
path.lineTo(548.934f, 130.512f);
path.cubicTo(548.087f, 130.125f, 547.26f, 129.932f, 546.483f, 129.932f);
path.cubicTo(544.574f, 129.932f, 542.828f, 131.377f, 542.828f, 133.503f);
path.cubicTo(542.828f, 135.538f, 544.411f, 137.054f, 546.534f, 137.054f);
path.cubicTo(547.341f, 137.054f, 548.198f, 136.83f, 549.005f, 136.402f);
path.lineTo(549.005f, 135.843f);
path.cubicTo(548.055f, 136.341f, 547.31f, 136.555f, 546.523f, 136.555f);
path.cubicTo(544.707f, 136.556f, 543.41f, 135.294f, 543.41f, 133.503f);
path.close();
path.moveTo(552.079f, 136.963f);
path.lineTo(552.62f, 136.963f);
path.lineTo(552.62f, 130.023f);
path.lineTo(552.079f, 130.023f);
path.lineTo(552.079f, 136.963f);
path.close();
path.moveTo(561.984f, 136.088f);
path.lineTo(556.705f, 130.024f);
path.lineTo(556.245f, 130.024f);
path.lineTo(556.245f, 136.964f);
path.lineTo(556.786f, 136.964f);
path.lineTo(556.786f, 130.899f);
path.lineTo(562.075f, 136.964f);
path.lineTo(562.524f, 136.964f);
path.lineTo(562.524f, 130.024f);
path.lineTo(561.983f, 130.024f);
path.lineTo(561.983f, 136.088f);
path.lineTo(561.984f, 136.088f);
path.close();
path.moveTo(570.122f, 134.257f);
path.lineTo(571.592f, 134.257f);
path.lineTo(571.592f, 136.129f);
path.cubicTo(571.041f, 136.403f, 570.489f, 136.556f, 569.683f, 136.556f);
path.cubicTo(567.488f, 136.556f, 566.456f, 135.05f, 566.456f, 133.493f);
path.cubicTo(566.456f, 131.733f, 567.763f, 130.43f, 569.529f, 130.43f);
path.cubicTo(570.366f, 130.43f, 571.153f, 130.654f, 572, 131.132f);
path.lineTo(572, 130.522f);
path.cubicTo(571.02f, 130.084f, 570.397f, 129.932f, 569.61f, 129.932f);
path.cubicTo(567.455f, 129.932f, 565.873f, 131.438f, 565.873f, 133.473f);
path.cubicTo(565.873f, 135.529f, 567.496f, 137.055f, 569.661f, 137.055f);
path.cubicTo(570.468f, 137.055f, 571.305f, 136.862f, 572.132f, 136.465f);
path.lineTo(572.132f, 133.809f);
path.lineTo(570.121f, 133.809f);
path.lineTo(570.121f, 134.257f);
path.lineTo(570.122f, 134.257f);
path.close();
path.moveTo(580.681f, 131.753f);
path.cubicTo(580.681f, 131.001f, 581.314f, 130.43f, 582.151f, 130.43f);
path.cubicTo(582.631f, 130.43f, 582.998f, 130.552f, 583.713f, 130.959f);
path.lineTo(583.713f, 130.37f);
path.cubicTo(583.172f, 130.075f, 582.641f, 129.933f, 582.099f, 129.933f);
path.cubicTo(580.996f, 129.933f, 580.098f, 130.747f, 580.098f, 131.775f);
path.cubicTo(580.098f, 134.065f, 583.417f, 133.2f, 583.417f, 135.173f);
path.cubicTo(583.417f, 135.956f, 582.774f, 136.557f, 581.947f, 136.557f);
path.cubicTo(581.406f, 136.557f, 580.966f, 136.374f, 580.191f, 135.814f);
path.lineTo(580.191f, 136.445f);
path.cubicTo(580.804f, 136.852f, 581.406f, 137.055f, 581.978f, 137.055f);
path.cubicTo(583.111f, 137.055f, 584, 136.221f, 584, 135.152f);
path.cubicTo(584, 132.72f, 580.681f, 133.605f, 580.681f, 131.753f);
path.close();
path.moveTo(587.543f, 133.503f);
path.cubicTo(587.543f, 131.743f, 588.85f, 130.43f, 590.586f, 130.43f);
path.cubicTo(591.413f, 130.43f, 592.199f, 130.644f, 593.067f, 131.102f);
path.lineTo(593.067f, 130.512f);
path.cubicTo(592.22f, 130.125f, 591.393f, 129.932f, 590.616f, 129.932f);
path.cubicTo(588.707f, 129.932f, 586.96f, 131.377f, 586.96f, 133.503f);
path.cubicTo(586.96f, 135.538f, 588.543f, 137.054f, 590.667f, 137.054f);
path.cubicTo(591.473f, 137.054f, 592.331f, 136.83f, 593.138f, 136.402f);
path.lineTo(593.138f, 135.843f);
path.cubicTo(592.188f, 136.341f, 591.443f, 136.555f, 590.657f, 136.555f);
path.cubicTo(588.84f, 136.556f, 587.543f, 135.294f, 587.543f, 133.503f);
path.close();
path.moveTo(596.212f, 136.963f);
path.lineTo(596.753f, 136.963f);
path.lineTo(596.753f, 130.023f);
path.lineTo(596.212f, 130.023f);
path.lineTo(596.212f, 136.963f);
path.close();
path.moveTo(600.94f, 133.697f);
path.lineTo(604.116f, 133.697f);
path.lineTo(604.116f, 133.25f);
path.lineTo(600.94f, 133.25f);
path.lineTo(600.94f, 130.472f);
path.lineTo(604.198f, 130.472f);
path.lineTo(604.198f, 130.024f);
path.lineTo(600.399f, 130.024f);
path.lineTo(600.399f, 136.964f);
path.lineTo(604.279f, 136.964f);
path.lineTo(604.279f, 136.516f);
path.lineTo(600.94f, 136.516f);
path.lineTo(600.94f, 133.697f);
path.close();
path.moveTo(613.163f, 136.088f);
path.lineTo(607.884f, 130.024f);
path.lineTo(607.424f, 130.024f);
path.lineTo(607.424f, 136.964f);
path.lineTo(607.965f, 136.964f);
path.lineTo(607.965f, 130.899f);
path.lineTo(613.254f, 136.964f);
path.lineTo(613.703f, 136.964f);
path.lineTo(613.703f, 130.024f);
path.lineTo(613.162f, 130.024f);
path.lineTo(613.162f, 136.088f);
path.lineTo(613.163f, 136.088f);
path.close();
path.moveTo(617.625f, 133.503f);
path.cubicTo(617.625f, 131.743f, 618.932f, 130.43f, 620.668f, 130.43f);
path.cubicTo(621.495f, 130.43f, 622.281f, 130.644f, 623.149f, 131.102f);
path.lineTo(623.149f, 130.512f);
path.cubicTo(622.301f, 130.125f, 621.474f, 129.932f, 620.698f, 129.932f);
path.cubicTo(618.789f, 129.932f, 617.042f, 131.377f, 617.042f, 133.503f);
path.cubicTo(617.042f, 135.538f, 618.625f, 137.054f, 620.749f, 137.054f);
path.cubicTo(621.556f, 137.054f, 622.413f, 136.83f, 623.22f, 136.402f);
path.lineTo(623.22f, 135.843f);
path.cubicTo(622.27f, 136.341f, 621.525f, 136.555f, 620.739f, 136.555f);
path.cubicTo(618.922f, 136.556f, 617.625f, 135.294f, 617.625f, 133.503f);
path.close();
path.moveTo(626.856f, 133.697f);
path.lineTo(630.032f, 133.697f);
path.lineTo(630.032f, 133.25f);
path.lineTo(626.856f, 133.25f);
path.lineTo(626.856f, 130.472f);
path.lineTo(630.114f, 130.472f);
path.lineTo(630.114f, 130.024f);
path.lineTo(626.316f, 130.024f);
path.lineTo(626.316f, 136.964f);
path.lineTo(630.196f, 136.964f);
path.lineTo(630.196f, 136.516f);
path.lineTo(626.857f, 136.516f);
path.lineTo(626.857f, 133.697f);
path.lineTo(626.856f, 133.697f);
path.close();
path.moveTo(633.115f, 136.963f);
path.lineTo(633.33f, 136.963f);
path.cubicTo(633.33f, 137.309f, 633.299f, 137.523f, 633.115f, 137.797f);
path.lineTo(633.115f, 138.154f);
path.cubicTo(633.565f, 137.828f, 633.779f, 137.269f, 633.779f, 136.75f);
path.lineTo(633.779f, 135.976f);
path.lineTo(633.115f, 135.976f);
path.lineTo(633.115f, 136.963f);
path.close();
path.moveTo(641.511f, 131.753f);
path.cubicTo(641.511f, 131.001f, 642.144f, 130.43f, 642.981f, 130.43f);
path.cubicTo(643.461f, 130.43f, 643.828f, 130.552f, 644.544f, 130.959f);
path.lineTo(644.544f, 130.37f);
path.cubicTo(644.003f, 130.075f, 643.472f, 129.933f, 642.931f, 129.933f);
path.cubicTo(641.828f, 129.933f, 640.929f, 130.747f, 640.929f, 131.775f);
path.cubicTo(640.929f, 134.065f, 644.247f, 133.2f, 644.247f, 135.173f);
path.cubicTo(644.247f, 135.956f, 643.604f, 136.557f, 642.777f, 136.557f);
path.cubicTo(642.236f, 136.557f, 641.797f, 136.374f, 641.02f, 135.814f);
path.lineTo(641.02f, 136.445f);
path.cubicTo(641.633f, 136.852f, 642.235f, 137.055f, 642.807f, 137.055f);
path.cubicTo(643.941f, 137.055f, 644.829f, 136.221f, 644.829f, 135.152f);
path.cubicTo(644.829f, 132.72f, 641.511f, 133.605f, 641.511f, 131.753f);
path.close();
path.moveTo(648.649f, 133.697f);
path.lineTo(651.824f, 133.697f);
path.lineTo(651.824f, 133.25f);
path.lineTo(648.649f, 133.25f);
path.lineTo(648.649f, 130.472f);
path.lineTo(651.906f, 130.472f);
path.lineTo(651.906f, 130.024f);
path.lineTo(648.107f, 130.024f);
path.lineTo(648.107f, 136.964f);
path.lineTo(651.988f, 136.964f);
path.lineTo(651.988f, 136.516f);
path.lineTo(648.649f, 136.516f);
path.lineTo(648.649f, 133.697f);
path.close();
path.moveTo(657.91f, 133.503f);
path.cubicTo(658.799f, 133.177f, 659.237f, 132.618f, 659.237f, 131.814f);
path.cubicTo(659.237f, 130.888f, 658.635f, 130.023f, 656.929f, 130.023f);
path.lineTo(655.142f, 130.023f);
path.lineTo(655.142f, 136.963f);
path.lineTo(655.683f, 136.963f);
path.lineTo(655.683f, 133.635f);
path.lineTo(656.623f, 133.635f);
path.cubicTo(657.46f, 133.635f, 657.726f, 133.747f, 658.563f, 135.06f);
path.lineTo(659.778f, 136.963f);
path.lineTo(660.411f, 136.963f);
path.lineTo(658.838f, 134.561f);
path.cubicTo(658.513f, 134.073f, 658.237f, 133.676f, 657.91f, 133.503f);
path.close();
path.moveTo(656.838f, 133.188f);
path.lineTo(655.684f, 133.188f);
path.lineTo(655.684f, 130.472f);
path.lineTo(656.817f, 130.472f);
path.cubicTo(658.094f, 130.472f, 658.655f, 131.041f, 658.655f, 131.825f);
path.cubicTo(658.655f, 132.659f, 658.063f, 133.188f, 656.838f, 133.188f);
path.close();
path.moveTo(664.968f, 135.894f);
path.lineTo(662.497f, 130.023f);
path.lineTo(661.956f, 130.023f);
path.lineTo(664.887f, 137.034f);
path.lineTo(665.04f, 137.034f);
path.lineTo(667.961f, 130.023f);
path.lineTo(667.42f, 130.023f);
path.lineTo(664.968f, 135.894f);
path.close();
path.moveTo(670.829f, 136.963f);
path.lineTo(671.37f, 136.963f);
path.lineTo(671.37f, 130.023f);
path.lineTo(670.829f, 130.023f);
path.lineTo(670.829f, 136.963f);
path.close();
path.moveTo(680.734f, 136.088f);
path.lineTo(675.455f, 130.024f);
path.lineTo(674.995f, 130.024f);
path.lineTo(674.995f, 136.964f);
path.lineTo(675.536f, 136.964f);
path.lineTo(675.536f, 130.899f);
path.lineTo(680.826f, 136.964f);
path.lineTo(681.275f, 136.964f);
path.lineTo(681.275f, 130.024f);
path.lineTo(680.733f, 130.024f);
path.lineTo(680.733f, 136.088f);
path.lineTo(680.734f, 136.088f);
path.close();
path.moveTo(688.873f, 134.257f);
path.lineTo(690.343f, 134.257f);
path.lineTo(690.343f, 136.129f);
path.cubicTo(689.791f, 136.403f, 689.24f, 136.556f, 688.433f, 136.556f);
path.cubicTo(686.238f, 136.556f, 685.206f, 135.05f, 685.206f, 133.493f);
path.cubicTo(685.206f, 131.733f, 686.514f, 130.43f, 688.28f, 130.43f);
path.cubicTo(689.117f, 130.43f, 689.903f, 130.654f, 690.751f, 131.132f);
path.lineTo(690.751f, 130.522f);
path.cubicTo(689.771f, 130.084f, 689.148f, 129.932f, 688.362f, 129.932f);
path.cubicTo(686.207f, 129.932f, 684.624f, 131.438f, 684.624f, 133.473f);
path.cubicTo(684.624f, 135.529f, 686.247f, 137.055f, 688.413f, 137.055f);
path.cubicTo(689.219f, 137.055f, 690.057f, 136.862f, 690.884f, 136.465f);
path.lineTo(690.884f, 133.809f);
path.lineTo(688.873f, 133.809f);
path.lineTo(688.873f, 134.257f);
path.close();
path.moveTo(699.432f, 131.753f);
path.cubicTo(699.432f, 131.001f, 700.065f, 130.43f, 700.902f, 130.43f);
path.cubicTo(701.381f, 130.43f, 701.749f, 130.552f, 702.464f, 130.959f);
path.lineTo(702.464f, 130.37f);
path.cubicTo(701.923f, 130.075f, 701.391f, 129.933f, 700.85f, 129.933f);
path.cubicTo(699.747f, 129.933f, 698.849f, 130.747f, 698.849f, 131.775f);
path.cubicTo(698.849f, 134.065f, 702.168f, 133.2f, 702.168f, 135.173f);
path.cubicTo(702.168f, 135.956f, 701.525f, 136.557f, 700.698f, 136.557f);
path.cubicTo(700.156f, 136.557f, 699.718f, 136.374f, 698.941f, 135.814f);
path.lineTo(698.941f, 136.445f);
path.cubicTo(699.553f, 136.852f, 700.156f, 137.055f, 700.728f, 137.055f);
path.cubicTo(701.862f, 137.055f, 702.75f, 136.221f, 702.75f, 135.152f);
path.cubicTo(702.75f, 132.72f, 699.432f, 133.605f, 699.432f, 131.753f);
path.close();
path.moveTo(709.407f, 129.932f);
path.cubicTo(707.345f, 129.932f, 705.731f, 131.499f, 705.731f, 133.493f);
path.cubicTo(705.731f, 135.488f, 707.345f, 137.054f, 709.407f, 137.054f);
path.cubicTo(711.48f, 137.054f, 713.104f, 135.487f, 713.104f, 133.493f);
path.cubicTo(713.104f, 131.499f, 711.481f, 129.932f, 709.407f, 129.932f);
path.close();
path.moveTo(709.428f, 136.556f);
path.cubicTo(707.683f, 136.556f, 706.314f, 135.223f, 706.314f, 133.493f);
path.cubicTo(706.314f, 131.763f, 707.682f, 130.43f, 709.428f, 130.43f);
path.cubicTo(711.175f, 130.43f, 712.523f, 131.763f, 712.523f, 133.493f);
path.cubicTo(712.522f, 135.223f, 711.175f, 136.556f, 709.428f, 136.556f);
path.close();
path.moveTo(716.739f, 133.503f);
path.cubicTo(716.739f, 131.743f, 718.046f, 130.43f, 719.782f, 130.43f);
path.cubicTo(720.609f, 130.43f, 721.395f, 130.644f, 722.264f, 131.102f);
path.lineTo(722.264f, 130.512f);
path.cubicTo(721.416f, 130.125f, 720.589f, 129.932f, 719.813f, 129.932f);
path.cubicTo(717.903f, 129.932f, 716.157f, 131.377f, 716.157f, 133.503f);
path.cubicTo(716.157f, 135.538f, 717.74f, 137.054f, 719.863f, 137.054f);
path.cubicTo(720.67f, 137.054f, 721.528f, 136.83f, 722.335f, 136.402f);
path.lineTo(722.335f, 135.843f);
path.cubicTo(721.385f, 136.341f, 720.64f, 136.555f, 719.854f, 136.555f);
path.cubicTo(718.037f, 136.556f, 716.739f, 135.294f, 716.739f, 133.503f);
path.close();
path.moveTo(725.409f, 136.963f);
path.lineTo(725.95f, 136.963f);
path.lineTo(725.95f, 130.023f);
path.lineTo(725.409f, 130.023f);
path.lineTo(725.409f, 136.963f);
path.close();
path.moveTo(730.136f, 133.697f);
path.lineTo(733.312f, 133.697f);
path.lineTo(733.312f, 133.25f);
path.lineTo(730.136f, 133.25f);
path.lineTo(730.136f, 130.472f);
path.lineTo(733.393f, 130.472f);
path.lineTo(733.393f, 130.024f);
path.lineTo(729.595f, 130.024f);
path.lineTo(729.595f, 136.964f);
path.lineTo(733.475f, 136.964f);
path.lineTo(733.475f, 136.516f);
path.lineTo(730.136f, 136.516f);
path.lineTo(730.136f, 133.697f);
path.close();
path.moveTo(735.865f, 130.472f);
path.lineTo(738.479f, 130.472f);
path.lineTo(738.479f, 136.964f);
path.lineTo(739.02f, 136.964f);
path.lineTo(739.02f, 130.472f);
path.lineTo(741.634f, 130.472f);
path.lineTo(741.634f, 130.024f);
path.lineTo(735.865f, 130.024f);
path.lineTo(735.865f, 130.472f);
path.close();
path.moveTo(749.017f, 130.023f);
path.lineTo(746.699f, 132.771f);
path.lineTo(744.371f, 130.023f);
path.lineTo(743.717f, 130.023f);
path.lineTo(746.423f, 133.239f);
path.lineTo(746.423f, 136.963f);
path.lineTo(746.964f, 136.963f);
path.lineTo(746.964f, 133.239f);
path.lineTo(749.67f, 130.023f);
path.lineTo(749.017f, 130.023f);
path.close();
path.moveTo(578.773f, 115.549f);
path.lineTo(578.773f, 62.773f);
path.lineTo(557.571f, 62.773f);
path.cubicTo(562.752f, 67.658f, 575.797f, 106.652f, 578.773f, 115.549f);
path.close();
path.moveTo(544.754f, 62.861f);
path.lineTo(524.496f, 62.861f);
path.lineTo(524.496f, 115.55f);
path.lineTo(524.934f, 115.55f);
path.lineTo(544.544f, 64.169f);
path.lineTo(528.157f, 115.549f);
path.lineTo(528.682f, 115.549f);
path.lineTo(546.557f, 67.658f);
path.lineTo(531.675f, 115.548f);
path.lineTo(532.376f, 115.548f);
path.lineTo(548.57f, 71.846f);
path.lineTo(535.293f, 115.507f);
path.lineTo(535.906f, 115.507f);
path.lineTo(544.281f, 97.58f);
path.lineTo(542.267f, 97.58f);
path.lineTo(550.409f, 76.033f);
path.lineTo(544.281f, 97.578f);
path.lineTo(546.119f, 97.578f);
path.lineTo(538.678f, 115.551f);
path.lineTo(565.029f, 115.551f);
path.cubicTo(562.052f, 106.477f, 550.759f, 67.92f, 544.754f, 62.861f);
path.close();
    SkPath path2(path);
    testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
}

static void (*skipTest)(skiatest::Reporter* , const char* filename) = nullptr;
static void (*firstTest)(skiatest::Reporter* , const char* filename) = nullptr;
static void (*stopTest)(skiatest::Reporter* , const char* filename) = nullptr;

static struct TestDesc tests[] = {
    TEST(skpwww_gorcraft_ru_1),
    TEST(http___www_project2061_org),
    TEST(http___www_emuleteca_cl_27),
    TEST(http___www_emuleteca_cl_26),
    TEST(http___www_emuleteca_cl_28),
    TEST(skpwww_nimble_com_au_1),
    TEST(skpwww_mybuilder_com_1),
    TEST(skpwww_neda_net_2),
    TEST(skpwww_woothemes_com_1),
    TEST(skpwww_neda_net_1),
    TEST(skpwww_tinytots_com_1),
    TEST(skpwww_educationalcraft_com_4a),
    TEST(skpwww_lptemp_com_3),
    TEST(skpwww_shinydemos_com_5),
    TEST(skpwww_lptemp_com_5),
    TEST(skpwww_shinydemos_com_15),
    TEST(skpwww_familysurvivalprotocol_wordpress_com_61),
    TEST(skpwww_alamdi_com_3),
    TEST(skpwww_devbridge_com_22),
    TEST(skpwww_firstunitedbank_com_19),
    TEST(skpwww_googleventures_com_32),
    TEST(skpwww_9to5mac_com_64),
    TEST(skpwww_wartepop_blogspot_com_br_6),
    TEST(skpwww_wartepop_blogspot_com_br_6a),
    TEST(skpwww_cooksnaps_com_32a),
    TEST(skpwww_argus_presse_fr_41),
    TEST(skpwww_cooksnaps_com_17),
    TEST(skpwww_cooksnaps_com_32),
    TEST(skpwww_kitcheninspirations_wordpress_com_66),
    TEST(skpwww_tcmevents_org_13),
    TEST(skpwww_narayana_publishers_com_194),
    TEST(skpwww_swapspacesystems_com_5),
    TEST(skpwww_vantageproduction_com_109),
    TEST(skpwww_americascup_com_108),
    TEST(skpwww_narayana_verlag_de_194),
    TEST(skpwww_etiqadd_com_2464),
    TEST(skpwww_paseoitaigara_com_br_56),
    TEST(skpwww_mortgagemarketguide_com_109),
    TEST(skpwww_aceinfographics_com_106),
    TEST(skpwww_educationalcraft_com_4),
    TEST(skpwww_kitcheninspirations_wordpress_com_32),
    TEST(skpwww_artblart_com_8),
    TEST(skpwww_docgelo_com_66),
    TEST(skpwww_uniquefx_net_442),
    TEST(skpwww_defense_studies_blogspot_com_64),
    TEST(skpwww_kenlevine_blogspot_com_28),
    TEST(skpwww_fashionscandal_com_94),
    TEST(skpwww_thaienews_blogspot_com_36),
    TEST(skpwww_galaxystwo_com_4),
    TEST(skpwww_catingueiraonline_com_352),
    TEST(skpwww_evolvehq_com_210),
    TEST(skpwww_odia_com_br_26),
    TEST(skpwww_lokado_de_173),
    TEST(skpwww_seopack_blogspot_com_2153),
    TEST(skpwww_partsdata_de_53),
    TEST(skpwww_simplysaru_com_40),
    TEST(skpwww_jessicaslens_wordpress_com_222),
    TEST(skpwww_kpopexplorer_net_22),
    TEST(skpwww_tunero_de_24),
    TEST(skpwww_karnivool_com_au_11),
    TEST(skpwww_pindosiya_com_99),
    TEST(skpwww_contextualnewsfeeds_com_346),
    TEST(skpwww_helha_be_109),
    TEST(skpwww_phototransferapp_com_24),
    TEST(skpwww_phototransferapp_com_24x),
    TEST(skpwww_gruposejaumdivulgador_com_br_4),
    TEST(skpwww_hubbyscook_com_22),
    TEST(skpwww_maturesupertube_com_21),
    TEST(skpwww_getgold_jp_731),
    TEST(skpwww_trashness_com_36),
    TEST(skpwww_exystence_net_61),
    TEST(skpwww_320kbps_net_2231),
    TEST(skpwww_heartiste_wordpress_com_86),
    TEST(skpwww_hairjobsearch_com_31),
    TEST(skpwww_alucinados_net_101),
    TEST(skpnamecheap_com_405),
    TEST(skpelpais_com_18),
    TEST(skpwww_cityads_ru_249),
    TEST(skpwww_alrakoba_net_62),
    TEST(skpwww_dealnews_com_315),
    TEST(skpwww_inmotionhosting_com_9),
    TEST(skpskpicture14),
    TEST(skpskpicture15),
    TEST(skpwww_meb_gov_tr_6),
    TEST(skpwww_sciality_com_101),
    TEST(skpwww_booking_com_68),
    TEST(skpwww_despegar_com_mx_272),
    TEST(skpwww_lavoixdunord_fr_11),
    TEST(skppptv_com_62),
    TEST(skppchappy_com_au102),
    TEST(skpsciality_com161),
    TEST(skpi_gino_com16),
    TEST(skpnaoxrane_ru23),
    TEST(skptcmevents_org23),
    TEST(skpredbullskatearcade_es16),
    TEST(skpfinanzasdigital_com9),
    TEST(skpgithub_io_26),
    TEST(skpgithub_io_25),
    TEST(skpwww_meb_gov_tr_5),
    TEST(skpwww_sciality_com_100),
    TEST(skpwww_joomla_org_23),
    TEST(skpwww_macrumors_com_131),
    TEST(skpwww_briian_com_34),
    TEST(skpwww_leadpages_net_84),
    TEST(skpwww_fj_p_com_22),
    TEST(skppartainasdemo250_org56),
    TEST(skpsd_graphic_net104),
    TEST(skpbreakmystyle_com10),
    TEST(skpnational_com_au81),
    TEST(skprentacheat_com30),
    TEST(skptracksflow_com9),
    TEST(skpautobutler_dk29),
    TEST(skponlinecollege_org144),
    TEST(skphostloco_com11),
    TEST(skpsergeychunkevich_com8),
    TEST(skpmlk_com326),
    TEST(skpcyclist_friends_gr52),
    TEST(skpfrauen_magazin_com83),
    TEST(skpthesuburbanite_com213),
    TEST(skpsudoestenegocios_com186),
    TEST(skpmtrk_uz27),
    TEST(skpilkoora_com37),
    TEST(skpmm4everfriends_com43),
    TEST(skpflite_com41),
    TEST(skpcheeseandburger_com225),
    TEST(skpeverytechpro_blogspot_com100),
};

static const size_t testCount = std::size(tests);

static bool runReverse = false;

DEF_TEST(PathOpsSkp, reporter) {
    RunTestSet(reporter, tests, testCount, firstTest, skipTest, stopTest, runReverse);
}
