{
  "title" : "Duplication",
  "timestamp" : "2026-01-18 17:23:19",
  "duplicates" : [ {
    "blockSize" : 30,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 89,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 37,
      "endLine" : 97,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 48,
      "endLine" : 108,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 55
    } ]
  }, {
    "blockSize" : 25,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp.NativeAssets.Linux.NoDependencies/buildTransitive/net4/SkiaSharp.targets",
        "extension" : "targets",
        "linesOfCode" : 37,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 1,
      "endLine" : 44,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp.NativeAssets.Linux/buildTransitive/net4/SkiaSharp.targets",
        "extension" : "targets",
        "linesOfCode" : 37,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 1,
      "endLine" : 44,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 25,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintGLSurfaceEventArgs.cs",
        "extension" : "cs",
        "linesOfCode" : 41,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 8,
      "endLine" : 50,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintGLSurfaceEventArgs.cs",
        "extension" : "cs",
        "linesOfCode" : 62,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 27,
      "endLine" : 69,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 23,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp.Resources/Properties/SkiaSharpResourcesAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 28,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 7,
      "endLine" : 36,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp.Skottie/Properties/SkiaSharpSkottieAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 28,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 7,
      "endLine" : 36,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 22,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 126,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 84,
      "startLine" : 49,
      "endLine" : 87,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 226,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 155,
      "startLine" : 58,
      "endLine" : 96,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 51
    } ]
  }, {
    "blockSize" : 21,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 78,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 55,
      "endLine" : 95,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 47
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 133,
      "endLine" : 173,
      "cleanedStartLine" : 70,
      "cleanedEndLine" : 90
    } ]
  }, {
    "blockSize" : 21,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 139,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 124,
      "endLine" : 164,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 84
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 78,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 55,
      "endLine" : 95,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 21,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.AppleiOS.cs",
        "extension" : "cs",
        "linesOfCode" : 68,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 42,
      "endLine" : 85,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 44
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs",
        "extension" : "cs",
        "linesOfCode" : 115,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 71,
      "startLine" : 84,
      "endLine" : 128,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 61
    } ]
  }, {
    "blockSize" : 21,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 139,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 124,
      "endLine" : 164,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 84
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 133,
      "endLine" : 173,
      "cleanedStartLine" : 70,
      "cleanedEndLine" : 90
    } ]
  }, {
    "blockSize" : 20,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Blazor/SKCanvasView.razor.cs",
        "extension" : "cs",
        "linesOfCode" : 145,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 91,
      "startLine" : 32,
      "endLine" : 69,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 37
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Blazor/SKGLView.razor.cs",
        "extension" : "cs",
        "linesOfCode" : 150,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 99,
      "startLine" : 39,
      "endLine" : 76,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 44
    } ]
  }, {
    "blockSize" : 20,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 72,
      "endLine" : 109,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 78,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 58,
      "endLine" : 95,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 20,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 72,
      "endLine" : 109,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 139,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 127,
      "endLine" : 164,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 20,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 72,
      "endLine" : 109,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 136,
      "endLine" : 173,
      "cleanedStartLine" : 71,
      "cleanedEndLine" : 90
    } ]
  }, {
    "blockSize" : 20,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKXamlCanvas.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 101,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 29,
      "endLine" : 65,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKXamlCanvas.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 31,
      "endLine" : 67,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 19,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WPF/SKGLElement.cs",
        "extension" : "cs",
        "linesOfCode" : 170,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 102,
      "startLine" : 142,
      "endLine" : 180,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 84
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKGLControl.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 70,
      "startLine" : 82,
      "endLine" : 119,
      "cleanedStartLine" : 40,
      "cleanedEndLine" : 58
    } ]
  }, {
    "blockSize" : 18,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Blazor/wwwroot/SKHtmlCanvas.js",
        "extension" : "js",
        "linesOfCode" : 161,
        "components" : [ "primary::source" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 59,
      "endLine" : 79,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 68
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Blazor/wwwroot/SKHtmlCanvas.ts",
        "extension" : "ts",
        "linesOfCode" : 178,
        "components" : [ "primary::source" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 153,
      "startLine" : 103,
      "endLine" : 126,
      "cleanedStartLine" : 68,
      "cleanedEndLine" : 85
    } ]
  }, {
    "blockSize" : 17,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 86,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 57,
      "endLine" : 86,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 133,
      "endLine" : 161,
      "cleanedStartLine" : 70,
      "cleanedEndLine" : 86
    } ]
  }, {
    "blockSize" : 17,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Handlers/SKCanvasView/SKCanvasViewHandler.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 60,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 16,
      "endLine" : 51,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Handlers/SKCanvasView/SKCanvasViewHandler.Tizen.cs",
        "extension" : "cs",
        "linesOfCode" : 59,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 15,
      "endLine" : 50,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 17,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 86,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 57,
      "endLine" : 86,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 78,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 55,
      "endLine" : 83,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 43
    } ]
  }, {
    "blockSize" : 17,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 86,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 57,
      "endLine" : 86,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 139,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 124,
      "endLine" : 152,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 80
    } ]
  }, {
    "blockSize" : 16,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.iOS.cs",
        "extension" : "cs",
        "linesOfCode" : 79,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 39,
      "endLine" : 67,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 77,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 35,
      "endLine" : 63,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 34
    } ]
  }, {
    "blockSize" : 16,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp.Resources/Properties/SkiaSharpResourcesAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 28,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 8,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/Properties/SkiaSharpAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 52,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 49,
      "startLine" : 8,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 16,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 122,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 118,
      "endLine" : 144,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 77
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 126,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 84,
      "startLine" : 99,
      "endLine" : 125,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 66
    } ]
  }, {
    "blockSize" : 16,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp.Skottie/Properties/SkiaSharpSkottieAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 28,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 8,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/Properties/SkiaSharpAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 52,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 49,
      "startLine" : 8,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 16,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Blazor/wwwroot/SKHtmlCanvas.js",
        "extension" : "js",
        "linesOfCode" : 161,
        "components" : [ "primary::source" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 87,
      "endLine" : 109,
      "cleanedStartLine" : 72,
      "cleanedEndLine" : 87
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Blazor/wwwroot/SKHtmlCanvas.ts",
        "extension" : "ts",
        "linesOfCode" : 178,
        "components" : [ "primary::source" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 153,
      "startLine" : 136,
      "endLine" : 163,
      "cleanedStartLine" : 89,
      "cleanedEndLine" : 104
    } ]
  }, {
    "blockSize" : 16,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 86,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 60,
      "endLine" : 86,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 43
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 72,
      "endLine" : 97,
      "cleanedStartLine" : 38,
      "cleanedEndLine" : 53
    } ]
  }, {
    "blockSize" : 16,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Blazor/wwwroot/SKHtmlCanvas.js",
        "extension" : "js",
        "linesOfCode" : 161,
        "components" : [ "primary::source" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 141,
      "endLine" : 156,
      "cleanedStartLine" : 109,
      "cleanedEndLine" : 124
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Blazor/wwwroot/SKHtmlCanvas.ts",
        "extension" : "ts",
        "linesOfCode" : 178,
        "components" : [ "primary::source" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 153,
      "startLine" : 202,
      "endLine" : 218,
      "cleanedStartLine" : 126,
      "cleanedEndLine" : 141
    } ]
  }, {
    "blockSize" : 15,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKColorF.cs",
        "extension" : "cs",
        "linesOfCode" : 204,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 184,
      "endLine" : 203,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 134
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKColorF.cs",
        "extension" : "cs",
        "linesOfCode" : 204,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 227,
      "endLine" : 246,
      "cleanedStartLine" : 148,
      "cleanedEndLine" : 162
    } ]
  }, {
    "blockSize" : 15,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKSwapChainPanel.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 42,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 12,
      "endLine" : 46,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.MacCatalyst.cs",
        "extension" : "cs",
        "linesOfCode" : 40,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 7,
      "endLine" : 43,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 15,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "native/windows/libHarfBuzzSharp/libHarfBuzzSharp.vcxproj",
        "extension" : "vcxproj",
        "linesOfCode" : 251,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 207,
      "endLine" : 223,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 172
    }, {
      "file" : {
        "relativePath" : "native/windows/libHarfBuzzSharp/libHarfBuzzSharp.vcxproj",
        "extension" : "vcxproj",
        "linesOfCode" : 251,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 227,
      "endLine" : 243,
      "cleanedStartLine" : 174,
      "cleanedEndLine" : 188
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 122,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 37,
      "endLine" : 56,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 126,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 84,
      "startLine" : 39,
      "endLine" : 58,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/WasmScripts/SkiaSharp.Views.Uno.Wasm.js",
        "extension" : "js",
        "linesOfCode" : 183,
        "components" : [ "primary::source" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 154,
      "startLine" : 218,
      "endLine" : 231,
      "cleanedStartLine" : 129,
      "cleanedEndLine" : 142
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Blazor/wwwroot/SKHtmlCanvas.ts",
        "extension" : "ts",
        "linesOfCode" : 178,
        "components" : [ "primary::source" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 153,
      "startLine" : 203,
      "endLine" : 216,
      "cleanedStartLine" : 127,
      "cleanedEndLine" : 140
    } ]
  }, {
    "blockSize" : 14,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/WasmScripts/SkiaSharp.Views.Uno.Wasm.js",
        "extension" : "js",
        "linesOfCode" : 183,
        "components" : [ "primary::source" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 154,
      "startLine" : 218,
      "endLine" : 231,
      "cleanedStartLine" : 129,
      "cleanedEndLine" : 142
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Blazor/wwwroot/SKHtmlCanvas.js",
        "extension" : "js",
        "linesOfCode" : 161,
        "components" : [ "primary::source" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 142,
      "endLine" : 155,
      "cleanedStartLine" : 110,
      "cleanedEndLine" : 123
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 89,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 12,
      "endLine" : 32,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 23,
      "endLine" : 43,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 55,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 45,
      "endLine" : 70,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKCanvasView.cs",
        "extension" : "cs",
        "linesOfCode" : 83,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 72,
      "endLine" : 97,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKCodec.cs",
        "extension" : "cs",
        "linesOfCode" : 222,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 161,
      "startLine" : 121,
      "endLine" : 134,
      "cleanedStartLine" : 62,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKCodec.cs",
        "extension" : "cs",
        "linesOfCode" : 222,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 161,
      "startLine" : 143,
      "endLine" : 156,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 89
    } ]
  }, {
    "blockSize" : 13,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintGLSurfaceEventArgs.cs",
        "extension" : "cs",
        "linesOfCode" : 62,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 51,
      "endLine" : 72,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 38
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKPaintMetalSurfaceEventArgs.cs",
        "extension" : "cs",
        "linesOfCode" : 45,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 34,
      "endLine" : 55,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintGLSurfaceEventArgs.cs",
        "extension" : "cs",
        "linesOfCode" : 41,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 32,
      "endLine" : 50,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKPaintMetalSurfaceEventArgs.cs",
        "extension" : "cs",
        "linesOfCode" : 45,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 34,
      "endLine" : 52,
      "cleanedStartLine" : 18,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs",
        "extension" : "cs",
        "linesOfCode" : 115,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 71,
      "startLine" : 29,
      "endLine" : 57,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKCanvasView.cs",
        "extension" : "cs",
        "linesOfCode" : 83,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 13,
      "endLine" : 41,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceView.cs",
        "extension" : "cs",
        "linesOfCode" : 48,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 20,
      "endLine" : 42,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs",
        "extension" : "cs",
        "linesOfCode" : 59,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 31,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 12,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Blazor/wwwroot/SKHtmlCanvas.js",
        "extension" : "js",
        "linesOfCode" : 161,
        "components" : [ "primary::source" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 124,
      "endLine" : 138,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 107
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Blazor/wwwroot/SKHtmlCanvas.ts",
        "extension" : "ts",
        "linesOfCode" : 178,
        "components" : [ "primary::source" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 153,
      "startLine" : 180,
      "endLine" : 198,
      "cleanedStartLine" : 113,
      "cleanedEndLine" : 124
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp.SceneGraph/Properties/SkiaSharpSceneGraphAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 27,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 20,
      "endLine" : 35,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp.Skottie/Properties/SkiaSharpSkottieAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 28,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 21,
      "endLine" : 36,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 89,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 101,
      "endLine" : 117,
      "cleanedStartLine" : 47,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 118,
      "endLine" : 134,
      "cleanedStartLine" : 59,
      "cleanedEndLine" : 69
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp.Skottie/Properties/SkiaSharpSkottieAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 28,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 21,
      "endLine" : 36,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/Properties/SkiaSharpAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 52,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 49,
      "startLine" : 49,
      "endLine" : 64,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 49
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp.Skottie/SkottieApi.cs",
        "extension" : "cs",
        "linesOfCode" : 19,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 9,
      "endLine" : 21,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SkiaApi.cs",
        "extension" : "cs",
        "linesOfCode" : 19,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 9,
      "endLine" : 21,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp.Resources/ResourcesApi.cs",
        "extension" : "cs",
        "linesOfCode" : 19,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 9,
      "endLine" : 21,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp.SceneGraph/SceneGraphApi.cs",
        "extension" : "cs",
        "linesOfCode" : 19,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 9,
      "endLine" : 21,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp.Resources/ResourcesApi.cs",
        "extension" : "cs",
        "linesOfCode" : 19,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 9,
      "endLine" : 21,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp.Skottie/SkottieApi.cs",
        "extension" : "cs",
        "linesOfCode" : 19,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 9,
      "endLine" : 21,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.AppleiOS.cs",
        "extension" : "cs",
        "linesOfCode" : 68,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 41,
      "endLine" : 60,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 55,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 40,
      "endLine" : 59,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 31
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/HarfBuzzSharp/Properties/HarfBuzzSharpAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 22,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 14,
      "endLine" : 29,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp.Skottie/Properties/SkiaSharpSkottieAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 28,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 21,
      "endLine" : 36,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp.Resources/Properties/SkiaSharpResourcesAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 28,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 21,
      "endLine" : 36,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/Properties/SkiaSharpAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 52,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 49,
      "startLine" : 49,
      "endLine" : 64,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 49
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp.Resources/Properties/SkiaSharpResourcesAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 28,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 21,
      "endLine" : 36,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 25
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp.SceneGraph/Properties/SkiaSharpSceneGraphAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 27,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 20,
      "endLine" : 35,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp.SceneGraph/Properties/SkiaSharpSceneGraphAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 27,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 13,
      "endLine" : 24,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/Properties/SkiaSharpAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 52,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 49,
      "startLine" : 35,
      "endLine" : 46,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKCodec.cs",
        "extension" : "cs",
        "linesOfCode" : 222,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 161,
      "startLine" : 146,
      "endLine" : 156,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKCodec.cs",
        "extension" : "cs",
        "linesOfCode" : 222,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 161,
      "startLine" : 184,
      "endLine" : 194,
      "cleanedStartLine" : 100,
      "cleanedEndLine" : 110
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp.SceneGraph/Properties/SkiaSharpSceneGraphAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 27,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 20,
      "endLine" : 35,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/Properties/SkiaSharpAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 52,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 49,
      "startLine" : 49,
      "endLine" : 64,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 49
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/HarfBuzzSharp/Properties/HarfBuzzSharpAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 22,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 14,
      "endLine" : 29,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp.Resources/Properties/SkiaSharpResourcesAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 28,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 21,
      "endLine" : 36,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 25
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp.Resources/ResourcesApi.cs",
        "extension" : "cs",
        "linesOfCode" : 19,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 9,
      "endLine" : 21,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SkiaApi.cs",
        "extension" : "cs",
        "linesOfCode" : 19,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 9,
      "endLine" : 21,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/HarfBuzzSharp/Properties/HarfBuzzSharpAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 22,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 14,
      "endLine" : 29,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp.SceneGraph/Properties/SkiaSharpSceneGraphAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 27,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 20,
      "endLine" : 35,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp.SceneGraph/SceneGraphApi.cs",
        "extension" : "cs",
        "linesOfCode" : 19,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 9,
      "endLine" : 21,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SkiaApi.cs",
        "extension" : "cs",
        "linesOfCode" : 19,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 9,
      "endLine" : 21,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKCodec.cs",
        "extension" : "cs",
        "linesOfCode" : 222,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 161,
      "startLine" : 124,
      "endLine" : 134,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKCodec.cs",
        "extension" : "cs",
        "linesOfCode" : 222,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 161,
      "startLine" : 184,
      "endLine" : 194,
      "cleanedStartLine" : 100,
      "cleanedEndLine" : 110
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "native/ios/build.cake",
        "extension" : "cake",
        "linesOfCode" : 104,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 56,
      "endLine" : 66,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 49
    }, {
      "file" : {
        "relativePath" : "native/tvos/build.cake",
        "extension" : "cake",
        "linesOfCode" : 65,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 30,
      "endLine" : 40,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "native/macos/build.cake",
        "extension" : "cake",
        "linesOfCode" : 69,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 60,
      "startLine" : 33,
      "endLine" : 43,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "native/tvos/build.cake",
        "extension" : "cake",
        "linesOfCode" : 65,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 30,
      "endLine" : 40,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp.SceneGraph/SceneGraphApi.cs",
        "extension" : "cs",
        "linesOfCode" : 19,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 9,
      "endLine" : 21,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp.Skottie/SkottieApi.cs",
        "extension" : "cs",
        "linesOfCode" : 19,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 9,
      "endLine" : 21,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 126,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 84,
      "startLine" : 18,
      "endLine" : 33,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 16
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 226,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 155,
      "startLine" : 22,
      "endLine" : 37,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 16
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/HarfBuzzSharp/Properties/HarfBuzzSharpAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 22,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 14,
      "endLine" : 29,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/Properties/SkiaSharpAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 52,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 49,
      "startLine" : 49,
      "endLine" : 64,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 49
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "native/windows/libHarfBuzzSharp/libHarfBuzzSharp.vcxproj",
        "extension" : "vcxproj",
        "linesOfCode" : 251,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 155,
      "endLine" : 167,
      "cleanedStartLine" : 118,
      "cleanedEndLine" : 128
    }, {
      "file" : {
        "relativePath" : "native/windows/libHarfBuzzSharp/libHarfBuzzSharp.vcxproj",
        "extension" : "vcxproj",
        "linesOfCode" : 251,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 171,
      "endLine" : 183,
      "cleanedStartLine" : 130,
      "cleanedEndLine" : 140
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "native/ios/build.cake",
        "extension" : "cake",
        "linesOfCode" : 104,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 56,
      "endLine" : 66,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 49
    }, {
      "file" : {
        "relativePath" : "native/macos/build.cake",
        "extension" : "cake",
        "linesOfCode" : 69,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 60,
      "startLine" : 33,
      "endLine" : 43,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp.SceneGraph/Properties/SkiaSharpSceneGraphAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 27,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 7,
      "endLine" : 17,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp.Skottie/Properties/SkiaSharpSkottieAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 28,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 8,
      "endLine" : 18,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Blazor/wwwroot/DpiWatcher.js",
        "extension" : "js",
        "linesOfCode" : 25,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 14,
      "endLine" : 24,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Blazor/wwwroot/DpiWatcher.ts",
        "extension" : "ts",
        "linesOfCode" : 29,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 24,
      "endLine" : 38,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 23
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/Definitions.cs",
        "extension" : "cs",
        "linesOfCode" : 537,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 442,
      "startLine" : 391,
      "endLine" : 400,
      "cleanedStartLine" : 275,
      "cleanedEndLine" : 284
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/Definitions.cs",
        "extension" : "cs",
        "linesOfCode" : 537,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 442,
      "startLine" : 421,
      "endLine" : 430,
      "cleanedStartLine" : 299,
      "cleanedEndLine" : 308
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp.Resources/Properties/SkiaSharpResourcesAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 28,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 25,
      "startLine" : 8,
      "endLine" : 18,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 13
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp.SceneGraph/Properties/SkiaSharpSceneGraphAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 27,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 7,
      "endLine" : 17,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.AppleiOS.cs",
        "extension" : "cs",
        "linesOfCode" : 68,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 4,
      "endLine" : 22,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 55,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 4,
      "endLine" : 22,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintSurfaceEventArgs.cs",
        "extension" : "cs",
        "linesOfCode" : 21,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 11,
      "startLine" : 7,
      "endLine" : 25,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintSurfaceEventArgs.cs",
        "extension" : "cs",
        "linesOfCode" : 40,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 25,
      "endLine" : 43,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "native/android/build.cake",
        "extension" : "cake",
        "linesOfCode" : 67,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 28,
      "endLine" : 37,
      "cleanedStartLine" : 20,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "native/linux/build.cake",
        "extension" : "cake",
        "linesOfCode" : 111,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 104,
      "startLine" : 75,
      "endLine" : 84,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 60
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "utils/SkiaSharpGenerator/Generate/GenerateCommand.cs",
        "extension" : "cs",
        "linesOfCode" : 77,
        "components" : [ "primary::utils" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 35,
      "endLine" : 51,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 26
    }, {
      "file" : {
        "relativePath" : "utils/SkiaSharpGenerator/Verify/VerifyCommand.cs",
        "extension" : "cs",
        "linesOfCode" : 68,
        "components" : [ "primary::utils" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 32,
      "endLine" : 48,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs",
        "extension" : "cs",
        "linesOfCode" : 59,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 1,
      "endLine" : 19,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 1,
      "endLine" : 20,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 139,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 62,
      "endLine" : 86,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 45
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 38,
      "endLine" : 62,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 32
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Blazor/SKCanvasView.razor.cs",
        "extension" : "cs",
        "linesOfCode" : 145,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 91,
      "startLine" : 125,
      "endLine" : 140,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 74
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Blazor/SKGLView.razor.cs",
        "extension" : "cs",
        "linesOfCode" : 150,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 99,
      "startLine" : 169,
      "endLine" : 184,
      "cleanedStartLine" : 86,
      "cleanedEndLine" : 95
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 55,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 41,
      "endLine" : 59,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 31
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs",
        "extension" : "cs",
        "linesOfCode" : 115,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 71,
      "startLine" : 84,
      "endLine" : 103,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 50
    } ]
  }, {
    "blockSize" : 10,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp.SceneGraph/Properties/SkiaSharpSceneGraphAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 27,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 24,
      "startLine" : 7,
      "endLine" : 17,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/Properties/SkiaSharpAssemblyInfo.cs",
        "extension" : "cs",
        "linesOfCode" : 52,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 49,
      "startLine" : 8,
      "endLine" : 18,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKGLControl.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 70,
      "startLine" : 91,
      "endLine" : 106,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 54
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 139,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 134,
      "endLine" : 149,
      "cleanedStartLine" : 70,
      "cleanedEndLine" : 78
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/GLTextureView.cs",
        "extension" : "cs",
        "linesOfCode" : 1205,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 706,
      "startLine" : 23,
      "endLine" : 35,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureView.cs",
        "extension" : "cs",
        "linesOfCode" : 59,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 34,
      "startLine" : 7,
      "endLine" : 19,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.AppleiOS.cs",
        "extension" : "cs",
        "linesOfCode" : 68,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 46,
      "endLine" : 60,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKCanvasView.cs",
        "extension" : "cs",
        "linesOfCode" : 83,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 72,
      "endLine" : 86,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKGLControl.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 70,
      "startLine" : 91,
      "endLine" : 106,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 54
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 78,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 65,
      "endLine" : 80,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 66,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 46,
      "endLine" : 60,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs",
        "extension" : "cs",
        "linesOfCode" : 115,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 71,
      "startLine" : 89,
      "endLine" : 103,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 50
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs",
        "extension" : "cs",
        "linesOfCode" : 115,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 71,
      "startLine" : 89,
      "endLine" : 103,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 50
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKCanvasView.cs",
        "extension" : "cs",
        "linesOfCode" : 83,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 72,
      "endLine" : 86,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WPF/SKGLElement.cs",
        "extension" : "cs",
        "linesOfCode" : 170,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 102,
      "startLine" : 152,
      "endLine" : 167,
      "cleanedStartLine" : 72,
      "cleanedEndLine" : 80
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 79,
      "endLine" : 94,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 51
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintGLSurfaceEventArgs.cs",
        "extension" : "cs",
        "linesOfCode" : 62,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 9,
      "endLine" : 25,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintSurfaceEventArgs.cs",
        "extension" : "cs",
        "linesOfCode" : 40,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 7,
      "endLine" : 23,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/GLTextureView.cs",
        "extension" : "cs",
        "linesOfCode" : 1205,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 706,
      "startLine" : 23,
      "endLine" : 35,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 8,
      "endLine" : 20,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.AppleiOS.cs",
        "extension" : "cs",
        "linesOfCode" : 68,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 46,
      "endLine" : 60,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 66,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 46,
      "endLine" : 60,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Handlers/SKCanvasView/SKCanvasViewHandler.Tizen.cs",
        "extension" : "cs",
        "linesOfCode" : 59,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 24,
      "endLine" : 44,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Handlers/SKCanvasView/SKCanvasViewHandler.Windows.cs",
        "extension" : "cs",
        "linesOfCode" : 62,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 24,
      "endLine" : 44,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 86,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 67,
      "endLine" : 83,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 41
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKGLControl.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 70,
      "startLine" : 91,
      "endLine" : 106,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 54
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 55,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 45,
      "endLine" : 59,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 31
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 66,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 46,
      "endLine" : 60,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WPF/SKGLElement.cs",
        "extension" : "cs",
        "linesOfCode" : 170,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 102,
      "startLine" : 31,
      "endLine" : 42,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKGLControl.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 70,
      "startLine" : 14,
      "endLine" : 25,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 89,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 12,
      "endLine" : 22,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 25,
      "endLine" : 35,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WPF/SKGLElement.cs",
        "extension" : "cs",
        "linesOfCode" : 170,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 102,
      "startLine" : 152,
      "endLine" : 167,
      "cleanedStartLine" : 72,
      "cleanedEndLine" : 80
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 86,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 67,
      "endLine" : 83,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 23,
      "endLine" : 33,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 25,
      "endLine" : 35,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WPF/SKGLElement.cs",
        "extension" : "cs",
        "linesOfCode" : 170,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 102,
      "startLine" : 152,
      "endLine" : 167,
      "cleanedStartLine" : 72,
      "cleanedEndLine" : 80
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 143,
      "endLine" : 158,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WPF/SKGLElement.cs",
        "extension" : "cs",
        "linesOfCode" : 170,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 102,
      "startLine" : 152,
      "endLine" : 167,
      "cleanedStartLine" : 72,
      "cleanedEndLine" : 80
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 139,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 134,
      "endLine" : 149,
      "cleanedStartLine" : 70,
      "cleanedEndLine" : 78
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Handlers/SKCanvasView/SKCanvasViewHandler.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 60,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 25,
      "endLine" : 45,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Handlers/SKCanvasView/SKCanvasViewHandler.Windows.cs",
        "extension" : "cs",
        "linesOfCode" : 62,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 24,
      "endLine" : 44,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WPF/SKGLElement.cs",
        "extension" : "cs",
        "linesOfCode" : 170,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 102,
      "startLine" : 152,
      "endLine" : 167,
      "cleanedStartLine" : 72,
      "cleanedEndLine" : 80
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 78,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 65,
      "endLine" : 80,
      "cleanedStartLine" : 33,
      "cleanedEndLine" : 41
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "native/wasm/build.cake",
        "extension" : "cake",
        "linesOfCode" : 131,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 20,
      "endLine" : 30,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 24
    }, {
      "file" : {
        "relativePath" : "native/wasm/build.cake",
        "extension" : "cake",
        "linesOfCode" : 131,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 114,
      "endLine" : 124,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 104
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKGLControl.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 70,
      "startLine" : 91,
      "endLine" : 106,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 54
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 79,
      "endLine" : 94,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 51
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKGLControl.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 70,
      "startLine" : 91,
      "endLine" : 106,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 54
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 143,
      "endLine" : 158,
      "cleanedStartLine" : 76,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 9,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 66,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 46,
      "endLine" : 60,
      "cleanedStartLine" : 21,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKCanvasView.cs",
        "extension" : "cs",
        "linesOfCode" : 83,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 72,
      "endLine" : 86,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "native/windows/libHarfBuzzSharp/libHarfBuzzSharp.vcxproj",
        "extension" : "vcxproj",
        "linesOfCode" : 251,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 195,
      "endLine" : 203,
      "cleanedStartLine" : 149,
      "cleanedEndLine" : 156
    }, {
      "file" : {
        "relativePath" : "native/windows/libHarfBuzzSharp/libHarfBuzzSharp.vcxproj",
        "extension" : "vcxproj",
        "linesOfCode" : 251,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 215,
      "endLine" : 223,
      "cleanedStartLine" : 165,
      "cleanedEndLine" : 172
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs",
        "extension" : "cs",
        "linesOfCode" : 115,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 71,
      "startLine" : 18,
      "endLine" : 27,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 139,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 41,
      "endLine" : 51,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WPF/WPFExtensions.cs",
        "extension" : "cs",
        "linesOfCode" : 107,
        "components" : [ "primary::source" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 36,
      "endLine" : 55,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/UWPExtensions.cs",
        "extension" : "cs",
        "linesOfCode" : 132,
        "components" : [ "primary::source" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 65,
      "startLine" : 53,
      "endLine" : 72,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/Definitions.cs",
        "extension" : "cs",
        "linesOfCode" : 537,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 442,
      "startLine" : 406,
      "endLine" : 413,
      "cleanedStartLine" : 287,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/Definitions.cs",
        "extension" : "cs",
        "linesOfCode" : 537,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 442,
      "startLine" : 421,
      "endLine" : 428,
      "cleanedStartLine" : 299,
      "cleanedEndLine" : 306
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKPath.cs",
        "extension" : "cs",
        "linesOfCode" : 488,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 362,
      "startLine" : 538,
      "endLine" : 548,
      "cleanedStartLine" : 313,
      "cleanedEndLine" : 320
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKPath.cs",
        "extension" : "cs",
        "linesOfCode" : 488,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 362,
      "startLine" : 579,
      "endLine" : 588,
      "cleanedStartLine" : 337,
      "cleanedEndLine" : 344
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Blazor/wwwroot/SizeWatcher.js",
        "extension" : "js",
        "linesOfCode" : 38,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 16,
      "endLine" : 25,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Blazor/wwwroot/SizeWatcher.ts",
        "extension" : "ts",
        "linesOfCode" : 47,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 34,
      "endLine" : 47,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "scripts/guardian/APIScanSurrogates.in.xml",
        "extension" : "xml",
        "linesOfCode" : 61,
        "components" : [ "primary::scripts" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 5,
      "endLine" : 15,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "scripts/guardian/APIScanSurrogates.in.xml",
        "extension" : "xml",
        "linesOfCode" : 61,
        "components" : [ "primary::scripts" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 34,
      "endLine" : 44,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/Definitions.cs",
        "extension" : "cs",
        "linesOfCode" : 537,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 442,
      "startLine" : 391,
      "endLine" : 398,
      "cleanedStartLine" : 275,
      "cleanedEndLine" : 282
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/Definitions.cs",
        "extension" : "cs",
        "linesOfCode" : 537,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 442,
      "startLine" : 406,
      "endLine" : 413,
      "cleanedStartLine" : 287,
      "cleanedEndLine" : 294
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.iOS.cs",
        "extension" : "cs",
        "linesOfCode" : 79,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 23,
      "endLine" : 36,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 77,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 21,
      "endLine" : 34,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 23,
      "endLine" : 32,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 78,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 12,
      "endLine" : 21,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "scripts/guardian/APIScanSurrogates.in.xml",
        "extension" : "xml",
        "linesOfCode" : 61,
        "components" : [ "primary::scripts" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 19,
      "endLine" : 29,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 20
    }, {
      "file" : {
        "relativePath" : "scripts/guardian/APIScanSurrogates.in.xml",
        "extension" : "xml",
        "linesOfCode" : 61,
        "components" : [ "primary::scripts" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 48,
      "endLine" : 58,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 38
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "native/ios/build.cake",
        "extension" : "cake",
        "linesOfCode" : 104,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 59,
      "endLine" : 66,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 49
    }, {
      "file" : {
        "relativePath" : "native/windows/build.cake",
        "extension" : "cake",
        "linesOfCode" : 77,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 71,
      "startLine" : 46,
      "endLine" : 53,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 42
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "build.cake",
        "extension" : "cake",
        "linesOfCode" : 601,
        "components" : [ "primary::ROOT" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 531,
      "startLine" : 336,
      "endLine" : 345,
      "cleanedStartLine" : 242,
      "cleanedEndLine" : 249
    }, {
      "file" : {
        "relativePath" : "build.cake",
        "extension" : "cake",
        "linesOfCode" : 601,
        "components" : [ "primary::ROOT" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 531,
      "startLine" : 368,
      "endLine" : 377,
      "cleanedStartLine" : 266,
      "cleanedEndLine" : 273
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.iOS.cs",
        "extension" : "cs",
        "linesOfCode" : 79,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 4,
      "endLine" : 20,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 77,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 2,
      "endLine" : 18,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 9
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKMetalView.cs",
        "extension" : "cs",
        "linesOfCode" : 121,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 21,
      "endLine" : 31,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 139,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 41,
      "endLine" : 51,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 126,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 84,
      "startLine" : 1,
      "endLine" : 22,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKXamlCanvas.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 101,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 1,
      "endLine" : 21,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKXamlCanvas.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 101,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 104,
      "endLine" : 118,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 58
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKXamlCanvas.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 78,
      "endLine" : 91,
      "cleanedStartLine" : 43,
      "cleanedEndLine" : 50
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "native/macos/build.cake",
        "extension" : "cake",
        "linesOfCode" : 69,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 60,
      "startLine" : 36,
      "endLine" : 43,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "native/windows/build.cake",
        "extension" : "cake",
        "linesOfCode" : 77,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 71,
      "startLine" : 46,
      "endLine" : 53,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 42
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 122,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 47,
      "endLine" : 56,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 226,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 155,
      "startLine" : 58,
      "endLine" : 67,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKMetalView.cs",
        "extension" : "cs",
        "linesOfCode" : 121,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 21,
      "endLine" : 31,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs",
        "extension" : "cs",
        "linesOfCode" : 115,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 71,
      "startLine" : 18,
      "endLine" : 27,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 89,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 12,
      "endLine" : 21,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 78,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 12,
      "endLine" : 21,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "native/windows/libHarfBuzzSharp/libHarfBuzzSharp.vcxproj",
        "extension" : "vcxproj",
        "linesOfCode" : 251,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 195,
      "endLine" : 203,
      "cleanedStartLine" : 149,
      "cleanedEndLine" : 156
    }, {
      "file" : {
        "relativePath" : "native/windows/libHarfBuzzSharp/libHarfBuzzSharp.vcxproj",
        "extension" : "vcxproj",
        "linesOfCode" : 251,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 235,
      "endLine" : 243,
      "cleanedStartLine" : 181,
      "cleanedEndLine" : 188
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "native/tvos/build.cake",
        "extension" : "cake",
        "linesOfCode" : 65,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 33,
      "endLine" : 40,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "native/windows/build.cake",
        "extension" : "cake",
        "linesOfCode" : 77,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 71,
      "startLine" : 46,
      "endLine" : 53,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 42
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 78,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 12,
      "endLine" : 21,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 25,
      "endLine" : 34,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/Binding.Shared/DelegateProxies.shared.cs",
        "extension" : "cs",
        "linesOfCode" : 271,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 209,
      "startLine" : 169,
      "endLine" : 179,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "binding/Binding.Shared/DelegateProxies.shared.cs",
        "extension" : "cs",
        "linesOfCode" : 271,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 209,
      "startLine" : 192,
      "endLine" : 202,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 126
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKSwapChainPanel.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 42,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 1,
      "endLine" : 14,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKXamlCanvas.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 101,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 1,
      "endLine" : 19,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/Binding.Shared/DelegateProxies.shared.cs",
        "extension" : "cs",
        "linesOfCode" : 271,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 209,
      "startLine" : 169,
      "endLine" : 179,
      "cleanedStartLine" : 103,
      "cleanedEndLine" : 109
    }, {
      "file" : {
        "relativePath" : "binding/Binding.Shared/DelegateProxies.shared.cs",
        "extension" : "cs",
        "linesOfCode" : 271,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 209,
      "startLine" : 218,
      "endLine" : 228,
      "cleanedStartLine" : 140,
      "cleanedEndLine" : 146
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.Reference.cs",
        "extension" : "cs",
        "linesOfCode" : 28,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 4,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.iOS.cs",
        "extension" : "cs",
        "linesOfCode" : 79,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 4,
      "endLine" : 18,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKXamlCanvas.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 101,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 1,
      "endLine" : 19,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKSwapChainPanel.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 226,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 1,
      "endLine" : 17,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 122,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 1,
      "endLine" : 18,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 126,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 84,
      "startLine" : 1,
      "endLine" : 20,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/Binding.Shared/DelegateProxies.shared.cs",
        "extension" : "cs",
        "linesOfCode" : 271,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 209,
      "startLine" : 192,
      "endLine" : 202,
      "cleanedStartLine" : 120,
      "cleanedEndLine" : 126
    }, {
      "file" : {
        "relativePath" : "binding/Binding.Shared/DelegateProxies.shared.cs",
        "extension" : "cs",
        "linesOfCode" : 271,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 209,
      "startLine" : 218,
      "endLine" : 228,
      "cleanedStartLine" : 140,
      "cleanedEndLine" : 146
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 56,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 2,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.Reference.cs",
        "extension" : "cs",
        "linesOfCode" : 28,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 4,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKSwapChainPanel.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 42,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 1,
      "endLine" : 14,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKXamlCanvas.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 1,
      "endLine" : 15,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKFrontBufferedManagedStream.cs",
        "extension" : "cs",
        "linesOfCode" : 133,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 88,
      "startLine" : 51,
      "endLine" : 61,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKManagedWStream.cs",
        "extension" : "cs",
        "linesOfCode" : 55,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 29,
      "startLine" : 32,
      "endLine" : 42,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/Binding.Shared/DelegateProxies.shared.cs",
        "extension" : "cs",
        "linesOfCode" : 271,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 209,
      "startLine" : 147,
      "endLine" : 154,
      "cleanedStartLine" : 88,
      "cleanedEndLine" : 94
    }, {
      "file" : {
        "relativePath" : "binding/Binding.Shared/DelegateProxies.shared.cs",
        "extension" : "cs",
        "linesOfCode" : 271,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 209,
      "startLine" : 257,
      "endLine" : 264,
      "cleanedStartLine" : 166,
      "cleanedEndLine" : 172
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WPF/WPFExtensions.cs",
        "extension" : "cs",
        "linesOfCode" : 107,
        "components" : [ "primary::source" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 82,
      "endLine" : 97,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/UWPExtensions.cs",
        "extension" : "cs",
        "linesOfCode" : 132,
        "components" : [ "primary::source" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 65,
      "startLine" : 109,
      "endLine" : 125,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 82,
      "endLine" : 97,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 139,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 149,
      "endLine" : 164,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.Reference.cs",
        "extension" : "cs",
        "linesOfCode" : 28,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 4,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 77,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 2,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKSwapChainPanel.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 226,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 1,
      "endLine" : 17,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKXamlCanvas.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 1,
      "endLine" : 15,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/Binding.Shared/DelegateProxies.shared.cs",
        "extension" : "cs",
        "linesOfCode" : 271,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 209,
      "startLine" : 184,
      "endLine" : 191,
      "cleanedStartLine" : 113,
      "cleanedEndLine" : 119
    }, {
      "file" : {
        "relativePath" : "binding/Binding.Shared/DelegateProxies.shared.cs",
        "extension" : "cs",
        "linesOfCode" : 271,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 209,
      "startLine" : 208,
      "endLine" : 215,
      "cleanedStartLine" : 131,
      "cleanedEndLine" : 137
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Reference.cs",
        "extension" : "cs",
        "linesOfCode" : 24,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 4,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 55,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 4,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKGLSurfaceView.cs",
        "extension" : "cs",
        "linesOfCode" : 153,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 105,
      "startLine" : 169,
      "endLine" : 175,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 78,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 61,
      "endLine" : 67,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 35
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 122,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 1,
      "endLine" : 18,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKSwapChainPanel.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 226,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 1,
      "endLine" : 17,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/Binding.Shared/DelegateProxies.shared.cs",
        "extension" : "cs",
        "linesOfCode" : 271,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 209,
      "startLine" : 112,
      "endLine" : 118,
      "cleanedStartLine" : 63,
      "cleanedEndLine" : 69
    }, {
      "file" : {
        "relativePath" : "binding/Binding.Shared/DelegateProxies.shared.cs",
        "extension" : "cs",
        "linesOfCode" : 271,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 209,
      "startLine" : 211,
      "endLine" : 217,
      "cleanedStartLine" : 133,
      "cleanedEndLine" : 139
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 60,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 45,
      "endLine" : 57,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKCanvasView.cs",
        "extension" : "cs",
        "linesOfCode" : 121,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 73,
      "startLine" : 87,
      "endLine" : 99,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WPF/SKGLElement.cs",
        "extension" : "cs",
        "linesOfCode" : 170,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 102,
      "startLine" : 206,
      "endLine" : 212,
      "cleanedStartLine" : 94,
      "cleanedEndLine" : 100
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WindowsForms/SKGLControl.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 70,
      "startLine" : 134,
      "endLine" : 140,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.Reference.cs",
        "extension" : "cs",
        "linesOfCode" : 28,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 1,
      "endLine" : 14,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Reference.cs",
        "extension" : "cs",
        "linesOfCode" : 24,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 1,
      "endLine" : 14,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 56,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 2,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.iOS.cs",
        "extension" : "cs",
        "linesOfCode" : 79,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 4,
      "endLine" : 18,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKGLSurfaceView.cs",
        "extension" : "cs",
        "linesOfCode" : 153,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 105,
      "startLine" : 169,
      "endLine" : 175,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 75,
      "endLine" : 81,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 45
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 82,
      "endLine" : 97,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 94,
      "endLine" : 109,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 57
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKTextBlob.cs",
        "extension" : "cs",
        "linesOfCode" : 403,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 285,
      "startLine" : 53,
      "endLine" : 62,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKTextBlob.cs",
        "extension" : "cs",
        "linesOfCode" : 403,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 285,
      "startLine" : 129,
      "endLine" : 138,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 82,
      "endLine" : 97,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 158,
      "endLine" : 173,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 90
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.AppleiOS.cs",
        "extension" : "cs",
        "linesOfCode" : 68,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 4,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Reference.cs",
        "extension" : "cs",
        "linesOfCode" : 24,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 4,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/GlesInterop/GlesContext.cs",
        "extension" : "cs",
        "linesOfCode" : 214,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 1,
      "endLine" : 16,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 226,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 155,
      "startLine" : 1,
      "endLine" : 24,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 122,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 1,
      "endLine" : 18,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKSwapChainPanel.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 42,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 1,
      "endLine" : 14,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 89,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 71,
      "endLine" : 86,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 42
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 78,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 80,
      "endLine" : 95,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKGLSurfaceView.cs",
        "extension" : "cs",
        "linesOfCode" : 153,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 105,
      "startLine" : 169,
      "endLine" : 175,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 139,
      "endLine" : 145,
      "cleanedStartLine" : 72,
      "cleanedEndLine" : 78
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKSwapChainPanel.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 42,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 1,
      "endLine" : 14,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKSwapChainPanel.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 226,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 1,
      "endLine" : 17,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 122,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 1,
      "endLine" : 18,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKXamlCanvas.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 1,
      "endLine" : 15,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 82,
      "endLine" : 97,
      "cleanedStartLine" : 45,
      "cleanedEndLine" : 51
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 78,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 80,
      "endLine" : 95,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 47
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 122,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 1,
      "endLine" : 18,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKXamlCanvas.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 101,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 1,
      "endLine" : 19,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKBitmap.cs",
        "extension" : "cs",
        "linesOfCode" : 605,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 362,
      "startLine" : 633,
      "endLine" : 642,
      "cleanedStartLine" : 288,
      "cleanedEndLine" : 294
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKSurface.cs",
        "extension" : "cs",
        "linesOfCode" : 231,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 196,
      "startLine" : 290,
      "endLine" : 299,
      "cleanedStartLine" : 171,
      "cleanedEndLine" : 177
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKXamlCanvas.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 101,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 1,
      "endLine" : 19,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKXamlCanvas.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 1,
      "endLine" : 15,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "build.cake",
        "extension" : "cake",
        "linesOfCode" : 601,
        "components" : [ "primary::ROOT" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 531,
      "startLine" : 307,
      "endLine" : 313,
      "cleanedStartLine" : 219,
      "cleanedEndLine" : 225
    }, {
      "file" : {
        "relativePath" : "build.cake",
        "extension" : "cake",
        "linesOfCode" : 601,
        "components" : [ "primary::ROOT" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 531,
      "startLine" : 339,
      "endLine" : 345,
      "cleanedStartLine" : 243,
      "cleanedEndLine" : 249
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 122,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 6,
      "endLine" : 20,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.Reference.cs",
        "extension" : "cs",
        "linesOfCode" : 28,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 4,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 122,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 6,
      "endLine" : 20,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 56,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 2,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 86,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 63,
      "endLine" : 70,
      "cleanedStartLine" : 29,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKGLSurfaceView.cs",
        "extension" : "cs",
        "linesOfCode" : 153,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 105,
      "startLine" : 169,
      "endLine" : 175,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 126,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 84,
      "startLine" : 1,
      "endLine" : 20,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKXamlCanvas.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 1,
      "endLine" : 15,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKMetalView.cs",
        "extension" : "cs",
        "linesOfCode" : 121,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 59,
      "endLine" : 74,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 139,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 76,
      "endLine" : 91,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/AppleExtensions.cs",
        "extension" : "cs",
        "linesOfCode" : 199,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 115,
      "startLine" : 154,
      "endLine" : 160,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 75
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/AppleExtensions.cs",
        "extension" : "cs",
        "linesOfCode" : 199,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 115,
      "startLine" : 174,
      "endLine" : 180,
      "cleanedStartLine" : 81,
      "cleanedEndLine" : 87
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKGLSurfaceView.cs",
        "extension" : "cs",
        "linesOfCode" : 153,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 105,
      "startLine" : 169,
      "endLine" : 175,
      "cleanedStartLine" : 83,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 139,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 130,
      "endLine" : 136,
      "cleanedStartLine" : 66,
      "cleanedEndLine" : 72
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 89,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 71,
      "endLine" : 86,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 42
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 94,
      "endLine" : 109,
      "cleanedStartLine" : 51,
      "cleanedEndLine" : 57
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Platform/Android/SKTouchHandler.cs",
        "extension" : "cs",
        "linesOfCode" : 110,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 72,
      "startLine" : 1,
      "endLine" : 16,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Platform/Windows/SKTouchHandler.cs",
        "extension" : "cs",
        "linesOfCode" : 162,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 105,
      "startLine" : 1,
      "endLine" : 22,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 122,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 6,
      "endLine" : 20,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.iOS.cs",
        "extension" : "cs",
        "linesOfCode" : 79,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 4,
      "endLine" : 18,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 60,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 3,
      "endLine" : 15,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Reference.cs",
        "extension" : "cs",
        "linesOfCode" : 24,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 4,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 119,
      "endLine" : 126,
      "cleanedStartLine" : 58,
      "cleanedEndLine" : 64
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 133,
      "endLine" : 140,
      "cleanedStartLine" : 67,
      "cleanedEndLine" : 73
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 60,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 3,
      "endLine" : 15,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 55,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 4,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 122,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 6,
      "endLine" : 20,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 77,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 2,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs",
        "extension" : "cs",
        "linesOfCode" : 115,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 71,
      "startLine" : 47,
      "endLine" : 62,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 139,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 76,
      "endLine" : 91,
      "cleanedStartLine" : 42,
      "cleanedEndLine" : 48
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "build.cake",
        "extension" : "cake",
        "linesOfCode" : 601,
        "components" : [ "primary::ROOT" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 531,
      "startLine" : 307,
      "endLine" : 313,
      "cleanedStartLine" : 219,
      "cleanedEndLine" : 225
    }, {
      "file" : {
        "relativePath" : "build.cake",
        "extension" : "cake",
        "linesOfCode" : 601,
        "components" : [ "primary::ROOT" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 531,
      "startLine" : 371,
      "endLine" : 377,
      "cleanedStartLine" : 267,
      "cleanedEndLine" : 273
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 126,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 84,
      "startLine" : 1,
      "endLine" : 20,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKSwapChainPanel.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 42,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 1,
      "endLine" : 14,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKCanvasView.cs",
        "extension" : "cs",
        "linesOfCode" : 69,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 41,
      "startLine" : 19,
      "endLine" : 28,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKCanvasView.nui.cs",
        "extension" : "cs",
        "linesOfCode" : 70,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 15,
      "endLine" : 24,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 12
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 56,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 2,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 77,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 2,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 89,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 71,
      "endLine" : 86,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 42
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 158,
      "endLine" : 173,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 90
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WPF/WPFExtensions.cs",
        "extension" : "cs",
        "linesOfCode" : 107,
        "components" : [ "primary::source" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 12,
      "endLine" : 29,
      "cleanedStartLine" : 3,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/UWPExtensions.cs",
        "extension" : "cs",
        "linesOfCode" : 132,
        "components" : [ "primary::source" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 65,
      "startLine" : 29,
      "endLine" : 46,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 60,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 3,
      "endLine" : 15,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.AppleiOS.cs",
        "extension" : "cs",
        "linesOfCode" : 68,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 4,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 8
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 150,
      "endLine" : 157,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 84
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 164,
      "endLine" : 171,
      "cleanedStartLine" : 87,
      "cleanedEndLine" : 93
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 126,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 84,
      "startLine" : 1,
      "endLine" : 20,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKSwapChainPanel.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 226,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 1,
      "endLine" : 17,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKMetalView.cs",
        "extension" : "cs",
        "linesOfCode" : 121,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 59,
      "endLine" : 74,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 34
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs",
        "extension" : "cs",
        "linesOfCode" : 115,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 71,
      "startLine" : 47,
      "endLine" : 62,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 30
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 89,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 71,
      "endLine" : 86,
      "cleanedStartLine" : 36,
      "cleanedEndLine" : 42
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 139,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 149,
      "endLine" : 164,
      "cleanedStartLine" : 78,
      "cleanedEndLine" : 84
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKSwapChainPanel.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 226,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 44,
      "endLine" : 51,
      "cleanedStartLine" : 25,
      "cleanedEndLine" : 30
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 86,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 18,
      "endLine" : 25,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "native/macos/build.cake",
        "extension" : "cake",
        "linesOfCode" : 69,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 60,
      "startLine" : 76,
      "endLine" : 84,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "native/tvos/build.cake",
        "extension" : "cake",
        "linesOfCode" : 65,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 72,
      "endLine" : 80,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 57
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKSwapChainPanel.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 42,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.Reference.cs",
        "extension" : "cs",
        "linesOfCode" : 28,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKSwapChainPanel.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 42,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 60,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 3,
      "endLine" : 13,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 56,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 2,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Reference.cs",
        "extension" : "cs",
        "linesOfCode" : 24,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 126,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 84,
      "startLine" : 5,
      "endLine" : 20,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.iOS.cs",
        "extension" : "cs",
        "linesOfCode" : 79,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 4,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 321,
      "endLine" : 327,
      "cleanedStartLine" : 182,
      "cleanedEndLine" : 187
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 334,
      "endLine" : 340,
      "cleanedStartLine" : 190,
      "cleanedEndLine" : 195
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Handlers/SKCanvasView/SKCanvasViewHandler.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 60,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 58,
      "endLine" : 68,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Handlers/SKCanvasView/SKCanvasViewHandler.Windows.cs",
        "extension" : "cs",
        "linesOfCode" : 62,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 31
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Handlers/SKGLView/SKGLViewHandler.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 109,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 64,
      "startLine" : 86,
      "endLine" : 97,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Handlers/SKGLView/SKGLViewHandler.Windows.cs",
        "extension" : "cs",
        "linesOfCode" : 99,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 60,
      "startLine" : 84,
      "endLine" : 95,
      "cleanedStartLine" : 39,
      "cleanedEndLine" : 44
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKXamlCanvas.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 5,
      "endLine" : 15,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.Reference.cs",
        "extension" : "cs",
        "linesOfCode" : 28,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.iOS.cs",
        "extension" : "cs",
        "linesOfCode" : 79,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 4,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.AppleiOS.cs",
        "extension" : "cs",
        "linesOfCode" : 68,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKXamlCanvas.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 5,
      "endLine" : 15,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 56,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 2,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 56,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 2,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 55,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKData.cs",
        "extension" : "cs",
        "linesOfCode" : 238,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 153,
      "startLine" : 161,
      "endLine" : 167,
      "cleanedStartLine" : 70,
      "cleanedEndLine" : 75
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKData.cs",
        "extension" : "cs",
        "linesOfCode" : 238,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 153,
      "startLine" : 173,
      "endLine" : 179,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 82
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/HarfBuzzSharp/Buffer.cs",
        "extension" : "cs",
        "linesOfCode" : 291,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 207,
      "startLine" : 201,
      "endLine" : 206,
      "cleanedStartLine" : 106,
      "cleanedEndLine" : 111
    }, {
      "file" : {
        "relativePath" : "binding/HarfBuzzSharp/Buffer.cs",
        "extension" : "cs",
        "linesOfCode" : 291,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 207,
      "startLine" : 233,
      "endLine" : 238,
      "cleanedStartLine" : 123,
      "cleanedEndLine" : 128
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.Reference.cs",
        "extension" : "cs",
        "linesOfCode" : 28,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 55,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 252,
      "endLine" : 258,
      "cleanedStartLine" : 140,
      "cleanedEndLine" : 145
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 265,
      "endLine" : 271,
      "cleanedStartLine" : 148,
      "cleanedEndLine" : 153
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/IncludeNativeAssets.SkiaSharp.targets",
        "extension" : "targets",
        "linesOfCode" : 66,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 50,
      "startLine" : 65,
      "endLine" : 73,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp.NativeAssets.WebAssembly/buildTransitive/SkiaSharp.targets",
        "extension" : "targets",
        "linesOfCode" : 20,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 15,
      "startLine" : 11,
      "endLine" : 21,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKFont.cs",
        "extension" : "cs",
        "linesOfCode" : 770,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 532,
      "startLine" : 449,
      "endLine" : 457,
      "cleanedStartLine" : 231,
      "cleanedEndLine" : 236
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKFont.cs",
        "extension" : "cs",
        "linesOfCode" : 770,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 532,
      "startLine" : 539,
      "endLine" : 547,
      "cleanedStartLine" : 278,
      "cleanedEndLine" : 283
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/SKPaintGLSurfaceEventArgs.cs",
        "extension" : "cs",
        "linesOfCode" : 41,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 17,
      "endLine" : 22,
      "cleanedStartLine" : 6,
      "cleanedEndLine" : 11
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKPaintMetalSurfaceEventArgs.cs",
        "extension" : "cs",
        "linesOfCode" : 45,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 19,
      "endLine" : 24,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "native/linuxnodeps/build.cake",
        "extension" : "cake",
        "linesOfCode" : 24,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "native/maccatalyst/build.cake",
        "extension" : "cake",
        "linesOfCode" : 23,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "build.cake",
        "extension" : "cake",
        "linesOfCode" : 601,
        "components" : [ "primary::ROOT" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 531,
      "startLine" : 206,
      "endLine" : 213,
      "cleanedStartLine" : 151,
      "cleanedEndLine" : 156
    }, {
      "file" : {
        "relativePath" : "build.cake",
        "extension" : "cake",
        "linesOfCode" : 601,
        "components" : [ "primary::ROOT" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 531,
      "startLine" : 257,
      "endLine" : 264,
      "cleanedStartLine" : 185,
      "cleanedEndLine" : 190
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Blazor/wwwroot/SKHtmlCanvas.js",
        "extension" : "js",
        "linesOfCode" : 161,
        "components" : [ "primary::source" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 136,
      "startLine" : 158,
      "endLine" : 164,
      "cleanedStartLine" : 126,
      "cleanedEndLine" : 131
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Blazor/wwwroot/SKHtmlCanvas.ts",
        "extension" : "ts",
        "linesOfCode" : 178,
        "components" : [ "primary::source" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 153,
      "startLine" : 220,
      "endLine" : 227,
      "cleanedStartLine" : 143,
      "cleanedEndLine" : 148
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.iOS.cs",
        "extension" : "cs",
        "linesOfCode" : 79,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 4,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Reference.cs",
        "extension" : "cs",
        "linesOfCode" : 24,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKColorF.cs",
        "extension" : "cs",
        "linesOfCode" : 204,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 164,
      "endLine" : 170,
      "cleanedStartLine" : 106,
      "cleanedEndLine" : 111
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKColorF.cs",
        "extension" : "cs",
        "linesOfCode" : 204,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 171,
      "startLine" : 210,
      "endLine" : 216,
      "cleanedStartLine" : 137,
      "cleanedEndLine" : 142
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 252,
      "endLine" : 258,
      "cleanedStartLine" : 140,
      "cleanedEndLine" : 145
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 334,
      "endLine" : 340,
      "cleanedStartLine" : 190,
      "cleanedEndLine" : 195
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKSwapChainPanel.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 226,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 7,
      "endLine" : 17,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.iOS.cs",
        "extension" : "cs",
        "linesOfCode" : 79,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 4,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 225,
      "endLine" : 231,
      "cleanedStartLine" : 124,
      "cleanedEndLine" : 129
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 303,
      "endLine" : 309,
      "cleanedStartLine" : 172,
      "cleanedEndLine" : 177
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 252,
      "endLine" : 258,
      "cleanedStartLine" : 140,
      "cleanedEndLine" : 145
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 321,
      "endLine" : 327,
      "cleanedStartLine" : 182,
      "cleanedEndLine" : 187
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKData.cs",
        "extension" : "cs",
        "linesOfCode" : 238,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 153,
      "startLine" : 161,
      "endLine" : 167,
      "cleanedStartLine" : 70,
      "cleanedEndLine" : 75
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKData.cs",
        "extension" : "cs",
        "linesOfCode" : 238,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 153,
      "startLine" : 185,
      "endLine" : 191,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 89
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 122,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 6,
      "endLine" : 18,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 60,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 3,
      "endLine" : 13,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "native/linux-clang-cross/build.cake",
        "extension" : "cake",
        "linesOfCode" : 52,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 53,
      "endLine" : 61,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "native/maccatalyst/build.cake",
        "extension" : "cake",
        "linesOfCode" : 23,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 21,
      "startLine" : 21,
      "endLine" : 28,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 225,
      "endLine" : 231,
      "cleanedStartLine" : 124,
      "cleanedEndLine" : 129
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 290,
      "endLine" : 296,
      "cleanedStartLine" : 164,
      "cleanedEndLine" : 169
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKXamlCanvas.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 5,
      "endLine" : 15,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 77,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 2,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "scripts/guardian/APIScanSurrogates.in.xml",
        "extension" : "xml",
        "linesOfCode" : 61,
        "components" : [ "primary::scripts" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 5,
      "endLine" : 10,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "scripts/guardian/APIScanSurrogates.in.xml",
        "extension" : "xml",
        "linesOfCode" : 61,
        "components" : [ "primary::scripts" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKCanvasLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 66,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 27,
      "endLine" : 35,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs",
        "extension" : "cs",
        "linesOfCode" : 115,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 71,
      "startLine" : 67,
      "endLine" : 75,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 77,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 2,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 55,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 290,
      "endLine" : 296,
      "cleanedStartLine" : 164,
      "cleanedEndLine" : 169
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 303,
      "endLine" : 309,
      "cleanedStartLine" : 172,
      "cleanedEndLine" : 177
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKXamlCanvas.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 101,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 5,
      "endLine" : 19,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.iOS.cs",
        "extension" : "cs",
        "linesOfCode" : 79,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 4,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 350,
      "endLine" : 356,
      "cleanedStartLine" : 200,
      "cleanedEndLine" : 205
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 363,
      "endLine" : 369,
      "cleanedStartLine" : 208,
      "cleanedEndLine" : 213
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "scripts/guardian/APIScanSurrogates.in.xml",
        "extension" : "xml",
        "linesOfCode" : 61,
        "components" : [ "primary::scripts" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 5,
      "endLine" : 10,
      "cleanedStartLine" : 4,
      "cleanedEndLine" : 9
    }, {
      "file" : {
        "relativePath" : "scripts/guardian/APIScanSurrogates.in.xml",
        "extension" : "xml",
        "linesOfCode" : 61,
        "components" : [ "primary::scripts" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 19,
      "endLine" : 24,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKSwapChainPanel.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 226,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 7,
      "endLine" : 17,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 56,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 2,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 77,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 2,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 60,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 3,
      "endLine" : 13,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKSwapChainPanel.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 226,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 136,
      "endLine" : 150,
      "cleanedStartLine" : 70,
      "cleanedEndLine" : 75
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 86,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 83,
      "endLine" : 97,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 46
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 126,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 84,
      "startLine" : 5,
      "endLine" : 20,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 56,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 2,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 139,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 139,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 78,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 15,
      "endLine" : 21,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/HarfBuzzSharp/Buffer.cs",
        "extension" : "cs",
        "linesOfCode" : 291,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 207,
      "startLine" : 159,
      "endLine" : 164,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "binding/HarfBuzzSharp/Buffer.cs",
        "extension" : "cs",
        "linesOfCode" : 291,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 207,
      "startLine" : 201,
      "endLine" : 206,
      "cleanedStartLine" : 106,
      "cleanedEndLine" : 111
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKSwapChainPanel.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 226,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 7,
      "endLine" : 17,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.AppleiOS.cs",
        "extension" : "cs",
        "linesOfCode" : 68,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "native/ios/build.cake",
        "extension" : "cake",
        "linesOfCode" : 104,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 28,
      "cleanedEndLine" : 33
    }, {
      "file" : {
        "relativePath" : "native/ios/build.cake",
        "extension" : "cake",
        "linesOfCode" : 104,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 106,
      "endLine" : 112,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 82
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/HarfBuzzSharp/Buffer.cs",
        "extension" : "cs",
        "linesOfCode" : 291,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 207,
      "startLine" : 159,
      "endLine" : 164,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 89
    }, {
      "file" : {
        "relativePath" : "binding/HarfBuzzSharp/Buffer.cs",
        "extension" : "cs",
        "linesOfCode" : 291,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 207,
      "startLine" : 233,
      "endLine" : 238,
      "cleanedStartLine" : 123,
      "cleanedEndLine" : 128
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKSwapChainPanel.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 226,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 7,
      "endLine" : 17,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Reference.cs",
        "extension" : "cs",
        "linesOfCode" : 24,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 126,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 84,
      "startLine" : 148,
      "endLine" : 156,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Blazor/SKCanvasView.razor.cs",
        "extension" : "cs",
        "linesOfCode" : 145,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 91,
      "startLine" : 132,
      "endLine" : 140,
      "cleanedStartLine" : 69,
      "cleanedEndLine" : 74
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKXamlCanvas.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 101,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 5,
      "endLine" : 19,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 55,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "build.cake",
        "extension" : "cake",
        "linesOfCode" : 601,
        "components" : [ "primary::ROOT" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 531,
      "startLine" : 326,
      "endLine" : 333,
      "cleanedStartLine" : 234,
      "cleanedEndLine" : 239
    }, {
      "file" : {
        "relativePath" : "build.cake",
        "extension" : "cake",
        "linesOfCode" : 601,
        "components" : [ "primary::ROOT" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 531,
      "startLine" : 358,
      "endLine" : 365,
      "cleanedStartLine" : 258,
      "cleanedEndLine" : 263
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/AngleSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 236,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 66,
      "endLine" : 73,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 226,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 155,
      "startLine" : 60,
      "endLine" : 67,
      "cleanedStartLine" : 32,
      "cleanedEndLine" : 37
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKXamlCanvas.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 101,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 5,
      "endLine" : 19,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 77,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 2,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Handlers/SKCanvasView/SKCanvasViewHandler.Apple.cs",
        "extension" : "cs",
        "linesOfCode" : 61,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 66,
      "endLine" : 73,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Handlers/SKGLView/SKGLViewHandler.MacCatalyst.cs",
        "extension" : "cs",
        "linesOfCode" : 103,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 104,
      "endLine" : 111,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 57
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Handlers/SKCanvasView/SKCanvasViewHandler.Apple.cs",
        "extension" : "cs",
        "linesOfCode" : 61,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 66,
      "endLine" : 73,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Handlers/SKGLView/SKGLViewHandler.iOS.cs",
        "extension" : "cs",
        "linesOfCode" : 173,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 112,
      "startLine" : 194,
      "endLine" : 201,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 106
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 126,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 84,
      "startLine" : 97,
      "endLine" : 106,
      "cleanedStartLine" : 50,
      "cleanedEndLine" : 55
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 226,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 155,
      "startLine" : 120,
      "endLine" : 129,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKSwapChainPanel.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 226,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 7,
      "endLine" : 17,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.Reference.cs",
        "extension" : "cs",
        "linesOfCode" : 28,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 126,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 84,
      "startLine" : 148,
      "endLine" : 156,
      "cleanedStartLine" : 79,
      "cleanedEndLine" : 84
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Blazor/SKGLView.razor.cs",
        "extension" : "cs",
        "linesOfCode" : 150,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 99,
      "startLine" : 176,
      "endLine" : 184,
      "cleanedStartLine" : 90,
      "cleanedEndLine" : 95
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "scripts/guardian/APIScanSurrogates.in.xml",
        "extension" : "xml",
        "linesOfCode" : 61,
        "components" : [ "primary::scripts" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 19,
      "endLine" : 24,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "scripts/guardian/APIScanSurrogates.in.xml",
        "extension" : "xml",
        "linesOfCode" : 61,
        "components" : [ "primary::scripts" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKColor.cs",
        "extension" : "cs",
        "linesOfCode" : 173,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 131,
      "startLine" : 175,
      "endLine" : 186,
      "cleanedStartLine" : 96,
      "cleanedEndLine" : 101
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKColor.cs",
        "extension" : "cs",
        "linesOfCode" : 173,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 131,
      "startLine" : 225,
      "endLine" : 236,
      "cleanedStartLine" : 123,
      "cleanedEndLine" : 128
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 126,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 84,
      "startLine" : 51,
      "endLine" : 58,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/AngleSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 236,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 66,
      "endLine" : 73,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 86,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 78,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 15,
      "endLine" : 21,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKCanvasView.cs",
        "extension" : "cs",
        "linesOfCode" : 115,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 71,
      "startLine" : 64,
      "endLine" : 74,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKCanvasView.cs",
        "extension" : "cs",
        "linesOfCode" : 83,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 43,
      "endLine" : 53,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 122,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 6,
      "endLine" : 18,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Reference.cs",
        "extension" : "cs",
        "linesOfCode" : 24,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKSwapChainPanel.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 42,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 56,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 2,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 126,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 84,
      "startLine" : 5,
      "endLine" : 20,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 77,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 2,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "scripts/guardian/APIScanSurrogates.in.xml",
        "extension" : "xml",
        "linesOfCode" : 61,
        "components" : [ "primary::scripts" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 34,
      "endLine" : 39,
      "cleanedStartLine" : 22,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "scripts/guardian/APIScanSurrogates.in.xml",
        "extension" : "xml",
        "linesOfCode" : 61,
        "components" : [ "primary::scripts" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 48,
      "endLine" : 53,
      "cleanedStartLine" : 31,
      "cleanedEndLine" : 36
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKXamlCanvas.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 5,
      "endLine" : 15,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 60,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 3,
      "endLine" : 13,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.Reference.cs",
        "extension" : "cs",
        "linesOfCode" : 28,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.AppleiOS.cs",
        "extension" : "cs",
        "linesOfCode" : 68,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKSwapChainPanel.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 42,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 77,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 2,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 129,
      "endLine" : 134,
      "cleanedStartLine" : 64,
      "cleanedEndLine" : 69
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKGLSurfaceView.cs",
        "extension" : "cs",
        "linesOfCode" : 153,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 105,
      "startLine" : 191,
      "endLine" : 196,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Shared/SKPaintGLSurfaceEventArgs.cs",
        "extension" : "cs",
        "linesOfCode" : 62,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 36,
      "endLine" : 41,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Apple/SKPaintMetalSurfaceEventArgs.cs",
        "extension" : "cs",
        "linesOfCode" : 45,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 19,
      "endLine" : 24,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 183,
      "endLine" : 189,
      "cleanedStartLine" : 98,
      "cleanedEndLine" : 103
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 321,
      "endLine" : 327,
      "cleanedStartLine" : 182,
      "cleanedEndLine" : 187
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "build.cake",
        "extension" : "cake",
        "linesOfCode" : 601,
        "components" : [ "primary::ROOT" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 531,
      "startLine" : 225,
      "endLine" : 234,
      "cleanedStartLine" : 165,
      "cleanedEndLine" : 170
    }, {
      "file" : {
        "relativePath" : "build.cake",
        "extension" : "cake",
        "linesOfCode" : 601,
        "components" : [ "primary::ROOT" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 531,
      "startLine" : 276,
      "endLine" : 284,
      "cleanedStartLine" : 199,
      "cleanedEndLine" : 204
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 139,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKSwapChainPanel.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 42,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.AppleiOS.cs",
        "extension" : "cs",
        "linesOfCode" : 68,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKXamlCanvas.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 5,
      "endLine" : 15,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.iOS.cs",
        "extension" : "cs",
        "linesOfCode" : 79,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 4,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKData.cs",
        "extension" : "cs",
        "linesOfCode" : 238,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 153,
      "startLine" : 173,
      "endLine" : 179,
      "cleanedStartLine" : 77,
      "cleanedEndLine" : 82
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKData.cs",
        "extension" : "cs",
        "linesOfCode" : 238,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::TODOs" ]
      },
      "sourceFileCleanedLinesOfCode" : 153,
      "startLine" : 185,
      "endLine" : 191,
      "cleanedStartLine" : 84,
      "cleanedEndLine" : 89
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKXamlCanvas.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 101,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 5,
      "endLine" : 19,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.Reference.cs",
        "extension" : "cs",
        "linesOfCode" : 28,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 225,
      "endLine" : 231,
      "cleanedStartLine" : 124,
      "cleanedEndLine" : 129
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 363,
      "endLine" : 369,
      "cleanedStartLine" : 208,
      "cleanedEndLine" : 213
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.Reference.cs",
        "extension" : "cs",
        "linesOfCode" : 28,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 60,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 3,
      "endLine" : 13,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKSwapChainPanel.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 226,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 7,
      "endLine" : 17,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 60,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 3,
      "endLine" : 13,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKXamlCanvas.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 101,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 5,
      "endLine" : 19,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 60,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 3,
      "endLine" : 13,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 183,
      "endLine" : 189,
      "cleanedStartLine" : 98,
      "cleanedEndLine" : 103
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 334,
      "endLine" : 340,
      "cleanedStartLine" : 190,
      "cleanedEndLine" : 195
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 225,
      "endLine" : 231,
      "cleanedStartLine" : 124,
      "cleanedEndLine" : 129
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 350,
      "endLine" : 356,
      "cleanedStartLine" : 200,
      "cleanedEndLine" : 205
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 126,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 84,
      "startLine" : 5,
      "endLine" : 20,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 60,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 3,
      "endLine" : 13,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 56,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 2,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 60,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 3,
      "endLine" : 13,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 183,
      "endLine" : 189,
      "cleanedStartLine" : 98,
      "cleanedEndLine" : 103
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 252,
      "endLine" : 258,
      "cleanedStartLine" : 140,
      "cleanedEndLine" : 145
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 212,
      "endLine" : 218,
      "cleanedStartLine" : 116,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 350,
      "endLine" : 356,
      "cleanedStartLine" : 200,
      "cleanedEndLine" : 205
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 290,
      "endLine" : 296,
      "cleanedStartLine" : 164,
      "cleanedEndLine" : 169
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 363,
      "endLine" : 369,
      "cleanedStartLine" : 208,
      "cleanedEndLine" : 213
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 212,
      "endLine" : 218,
      "cleanedStartLine" : 116,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 363,
      "endLine" : 369,
      "cleanedStartLine" : 208,
      "cleanedEndLine" : 213
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 290,
      "endLine" : 296,
      "cleanedStartLine" : 164,
      "cleanedEndLine" : 169
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 350,
      "endLine" : 356,
      "cleanedStartLine" : 200,
      "cleanedEndLine" : 205
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "native/windows/libHarfBuzzSharp/libHarfBuzzSharp.vcxproj",
        "extension" : "vcxproj",
        "linesOfCode" : 251,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 187,
      "endLine" : 193,
      "cleanedStartLine" : 142,
      "cleanedEndLine" : 147
    }, {
      "file" : {
        "relativePath" : "native/windows/libHarfBuzzSharp/libHarfBuzzSharp.vcxproj",
        "extension" : "vcxproj",
        "linesOfCode" : 251,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 207,
      "endLine" : 213,
      "cleanedStartLine" : 158,
      "cleanedEndLine" : 163
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Handlers/SKCanvasView/SKCanvasViewHandler.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 60,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 58,
      "endLine" : 68,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Handlers/SKCanvasView/SKCanvasViewHandler.Tizen.cs",
        "extension" : "cs",
        "linesOfCode" : 59,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 57,
      "endLine" : 67,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 303,
      "endLine" : 309,
      "cleanedStartLine" : 172,
      "cleanedEndLine" : 177
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 350,
      "endLine" : 356,
      "cleanedStartLine" : 200,
      "cleanedEndLine" : 205
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 303,
      "endLine" : 309,
      "cleanedStartLine" : 172,
      "cleanedEndLine" : 177
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 363,
      "endLine" : 369,
      "cleanedStartLine" : 208,
      "cleanedEndLine" : 213
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 86,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 89,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 15,
      "endLine" : 21,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 183,
      "endLine" : 189,
      "cleanedStartLine" : 98,
      "cleanedEndLine" : 103
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 265,
      "endLine" : 271,
      "cleanedStartLine" : 148,
      "cleanedEndLine" : 153
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKSwapChainPanel.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 42,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.iOS.cs",
        "extension" : "cs",
        "linesOfCode" : 79,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 4,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "native/windows/libHarfBuzzSharp/libHarfBuzzSharp.vcxproj",
        "extension" : "vcxproj",
        "linesOfCode" : 251,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 187,
      "endLine" : 193,
      "cleanedStartLine" : 142,
      "cleanedEndLine" : 147
    }, {
      "file" : {
        "relativePath" : "native/windows/libHarfBuzzSharp/libHarfBuzzSharp.vcxproj",
        "extension" : "vcxproj",
        "linesOfCode" : 251,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 191,
      "startLine" : 227,
      "endLine" : 233,
      "cleanedStartLine" : 174,
      "cleanedEndLine" : 179
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 89,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 15,
      "endLine" : 21,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 139,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 86,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 77,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 2,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Reference.cs",
        "extension" : "cs",
        "linesOfCode" : 24,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 183,
      "endLine" : 189,
      "cleanedStartLine" : 98,
      "cleanedEndLine" : 103
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 196,
      "endLine" : 202,
      "cleanedStartLine" : 106,
      "cleanedEndLine" : 111
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 126,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 84,
      "startLine" : 5,
      "endLine" : 20,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 55,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 126,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 84,
      "startLine" : 5,
      "endLine" : 20,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.AppleiOS.cs",
        "extension" : "cs",
        "linesOfCode" : 68,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "native/android/build.cake",
        "extension" : "cake",
        "linesOfCode" : 67,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 32,
      "endLine" : 37,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "native/wasm/build.cake",
        "extension" : "cake",
        "linesOfCode" : 131,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "native/linux/build.cake",
        "extension" : "cake",
        "linesOfCode" : 111,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 104,
      "startLine" : 89,
      "endLine" : 95,
      "cleanedStartLine" : 65,
      "cleanedEndLine" : 70
    }, {
      "file" : {
        "relativePath" : "native/linux/build.cake",
        "extension" : "cake",
        "linesOfCode" : 111,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 104,
      "startLine" : 121,
      "endLine" : 127,
      "cleanedStartLine" : 90,
      "cleanedEndLine" : 95
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.iOS.cs",
        "extension" : "cs",
        "linesOfCode" : 79,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 4,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 55,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLTextureViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 26,
      "endLine" : 32,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 86,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 139,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 86,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 28,
      "endLine" : 34,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 21
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKXamlCanvas.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 5,
      "endLine" : 15,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 55,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKSwapChainPanel.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 42,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Reference.cs",
        "extension" : "cs",
        "linesOfCode" : 24,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKSwapChainPanel.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 226,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 7,
      "endLine" : 17,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 55,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 196,
      "endLine" : 202,
      "cleanedStartLine" : 106,
      "cleanedEndLine" : 111
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 321,
      "endLine" : 327,
      "cleanedStartLine" : 182,
      "cleanedEndLine" : 187
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 196,
      "endLine" : 202,
      "cleanedStartLine" : 106,
      "cleanedEndLine" : 111
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 334,
      "endLine" : 340,
      "cleanedStartLine" : 190,
      "cleanedEndLine" : 195
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKXamlCanvas.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 101,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 5,
      "endLine" : 19,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.AppleiOS.cs",
        "extension" : "cs",
        "linesOfCode" : 68,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 265,
      "endLine" : 271,
      "cleanedStartLine" : 148,
      "cleanedEndLine" : 153
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 334,
      "endLine" : 340,
      "cleanedStartLine" : 190,
      "cleanedEndLine" : 195
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLView.cs",
        "extension" : "cs",
        "linesOfCode" : 139,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 93,
      "startLine" : 53,
      "endLine" : 59,
      "cleanedStartLine" : 30,
      "cleanedEndLine" : 35
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 77,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 2,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.AppleiOS.cs",
        "extension" : "cs",
        "linesOfCode" : 68,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 265,
      "endLine" : 271,
      "cleanedStartLine" : 148,
      "cleanedEndLine" : 153
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 321,
      "endLine" : 327,
      "cleanedStartLine" : 182,
      "cleanedEndLine" : 187
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Blazor/wwwroot/SizeWatcher.js",
        "extension" : "js",
        "linesOfCode" : 38,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 32,
      "startLine" : 8,
      "endLine" : 13,
      "cleanedStartLine" : 7,
      "cleanedEndLine" : 12
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.Blazor/wwwroot/SizeWatcher.ts",
        "extension" : "ts",
        "linesOfCode" : 47,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 40,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKXamlCanvas.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 5,
      "endLine" : 15,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Reference.cs",
        "extension" : "cs",
        "linesOfCode" : 24,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 126,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 84,
      "startLine" : 5,
      "endLine" : 20,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Reference.cs",
        "extension" : "cs",
        "linesOfCode" : 24,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKXamlCanvas.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 105,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 69,
      "startLine" : 5,
      "endLine" : 15,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.AppleiOS.cs",
        "extension" : "cs",
        "linesOfCode" : 68,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "native/linux/build.cake",
        "extension" : "cake",
        "linesOfCode" : 111,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 104,
      "startLine" : 79,
      "endLine" : 84,
      "cleanedStartLine" : 55,
      "cleanedEndLine" : 60
    }, {
      "file" : {
        "relativePath" : "native/wasm/build.cake",
        "extension" : "cake",
        "linesOfCode" : 131,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 128,
      "startLine" : 53,
      "endLine" : 58,
      "cleanedStartLine" : 46,
      "cleanedEndLine" : 51
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 122,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 6,
      "endLine" : 18,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 55,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 212,
      "endLine" : 218,
      "cleanedStartLine" : 116,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 225,
      "endLine" : 231,
      "cleanedStartLine" : 124,
      "cleanedEndLine" : 129
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 89,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 15,
      "endLine" : 21,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 56,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 2,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.AppleiOS.cs",
        "extension" : "cs",
        "linesOfCode" : 68,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "native/linux-clang-cross/build.cake",
        "extension" : "cake",
        "linesOfCode" : 52,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 46,
      "startLine" : 53,
      "endLine" : 61,
      "cleanedStartLine" : 41,
      "cleanedEndLine" : 46
    }, {
      "file" : {
        "relativePath" : "native/linuxnodeps/build.cake",
        "extension" : "cake",
        "linesOfCode" : 24,
        "components" : [ "primary::native" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 22,
      "endLine" : 29,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/macOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 78,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 15,
      "endLine" : 21,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKXamlCanvas.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 101,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 5,
      "endLine" : 19,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 56,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 2,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Handlers/SKCanvasView/SKCanvasViewHandler.Tizen.cs",
        "extension" : "cs",
        "linesOfCode" : 59,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 33,
      "startLine" : 57,
      "endLine" : 67,
      "cleanedStartLine" : 24,
      "cleanedEndLine" : 29
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Handlers/SKCanvasView/SKCanvasViewHandler.Windows.cs",
        "extension" : "cs",
        "linesOfCode" : 62,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 36,
      "startLine" : 60,
      "endLine" : 70,
      "cleanedStartLine" : 26,
      "cleanedEndLine" : 31
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 122,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 49,
      "endLine" : 56,
      "cleanedStartLine" : 27,
      "cleanedEndLine" : 32
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/AngleSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 236,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 144,
      "startLine" : 66,
      "endLine" : 73,
      "cleanedStartLine" : 35,
      "cleanedEndLine" : 40
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 86,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 61,
      "startLine" : 17,
      "endLine" : 23,
      "cleanedStartLine" : 9,
      "cleanedEndLine" : 14
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/iOS/SKGLLayer.cs",
        "extension" : "cs",
        "linesOfCode" : 136,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 94,
      "startLine" : 32,
      "endLine" : 38,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 196,
      "endLine" : 202,
      "cleanedStartLine" : 106,
      "cleanedEndLine" : 111
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 265,
      "endLine" : 271,
      "cleanedStartLine" : 148,
      "cleanedEndLine" : 153
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 196,
      "endLine" : 202,
      "cleanedStartLine" : 106,
      "cleanedEndLine" : 111
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 252,
      "endLine" : 258,
      "cleanedStartLine" : 140,
      "cleanedEndLine" : 145
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Wasm/SKSwapChainPanel.Wasm.cs",
        "extension" : "cs",
        "linesOfCode" : 226,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 167,
      "startLine" : 7,
      "endLine" : 17,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 77,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 51,
      "startLine" : 2,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKSwapChainPanel.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 42,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 20,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.macOS.cs",
        "extension" : "cs",
        "linesOfCode" : 55,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 35,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 212,
      "endLine" : 218,
      "cleanedStartLine" : 116,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 290,
      "endLine" : 296,
      "cleanedStartLine" : 164,
      "cleanedEndLine" : 169
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Android/SKGLSurfaceViewRenderer.cs",
        "extension" : "cs",
        "linesOfCode" : 89,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 57,
      "startLine" : 112,
      "endLine" : 117,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views/SkiaSharp.Views/Platform/Tizen/SKGLSurfaceView.cs",
        "extension" : "cs",
        "linesOfCode" : 153,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 105,
      "startLine" : 191,
      "endLine" : 196,
      "cleanedStartLine" : 97,
      "cleanedEndLine" : 102
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKXamlCanvas.cs",
        "extension" : "cs",
        "linesOfCode" : 126,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 84,
      "startLine" : 5,
      "endLine" : 20,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.Reference.cs",
        "extension" : "cs",
        "linesOfCode" : 28,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 212,
      "endLine" : 218,
      "cleanedStartLine" : 116,
      "cleanedEndLine" : 121
    }, {
      "file" : {
        "relativePath" : "binding/SkiaSharp/SKShader.cs",
        "extension" : "cs",
        "linesOfCode" : 330,
        "components" : [ "primary::binding" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 255,
      "startLine" : 303,
      "endLine" : 309,
      "cleanedStartLine" : 172,
      "cleanedEndLine" : 177
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKSwapChainPanel.iOS.cs",
        "extension" : "cs",
        "linesOfCode" : 79,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 52,
      "startLine" : 4,
      "endLine" : 16,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Android.cs",
        "extension" : "cs",
        "linesOfCode" : 60,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 3,
      "endLine" : 13,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Skia/SKXamlCanvas.Skia.cs",
        "extension" : "cs",
        "linesOfCode" : 101,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 62,
      "startLine" : 5,
      "endLine" : 19,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.Reference.cs",
        "extension" : "cs",
        "linesOfCode" : 24,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 13,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI.Shared/SKSwapChainPanel.cs",
        "extension" : "cs",
        "linesOfCode" : 122,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 81,
      "startLine" : 6,
      "endLine" : 18,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Uno/SkiaSharp.Views.Uno.WinUI/SKXamlCanvas.AppleiOS.cs",
        "extension" : "cs",
        "linesOfCode" : 68,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 44,
      "startLine" : 4,
      "endLine" : 14,
      "cleanedStartLine" : 2,
      "cleanedEndLine" : 7
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Handlers/SKGLView/SKGLViewHandler.MacCatalyst.cs",
        "extension" : "cs",
        "linesOfCode" : 103,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 63,
      "startLine" : 104,
      "endLine" : 111,
      "cleanedStartLine" : 52,
      "cleanedEndLine" : 57
    }, {
      "file" : {
        "relativePath" : "source/SkiaSharp.Views.Maui/SkiaSharp.Views.Maui.Core/Handlers/SKGLView/SKGLViewHandler.iOS.cs",
        "extension" : "cs",
        "linesOfCode" : 173,
        "components" : [ "primary::source" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 112,
      "startLine" : 194,
      "endLine" : 201,
      "cleanedStartLine" : 101,
      "cleanedEndLine" : 106
    } ]
  } ],
  "overallDuplication" : null
}