{
  "TypeId": "ScriptImageRenderer",
  "Version": 1,
  "Name": "043627c0-13b3-45e0-8c35-dc444922f53c",
  "DisplayName": "NV21 - C#",
  "OutputFormat": "Bgra32",
  "SupportedRenderingOptions": [],
  "PlaneDescriptors": [
    {
      "PixelStride": 1,
      "MinEffectiveBits": 8,
      "MaxEffectiveBits": 8,
      "AreAdjustableBlackWhiteLevels": false,
      "HorizontalSubsampling": 1,
      "VerticalSubsampling": 1
    },
    {
      "PixelStride": 2,
      "MinEffectiveBits": 8,
      "MaxEffectiveBits": 8,
      "AreAdjustableBlackWhiteLevels": false,
      "HorizontalSubsampling": 2,
      "VerticalSubsampling": 2
    }
  ],
  "RenderingScript": {
    "Language": "CSharp_14",
    "Source": "LyoKICogUmVuZGVyIE5WMjEgKFlVViA0OjI6MCwgc2VtaS1wbGFuYXIsIFYgYmVmb3JlIFUpIGludG8gYSBCZ3JhMzIgaW1hZ2UuCiAqCiAqIFBsYW5lIDAgLSBZICA6IHBpeGVsIHN0cmlkZSBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiAyIGx1bWEgc2FtcGxlcywgcm93IHN0cmlkZSB0aGUgZGlzdGFuY2UgYmV0d2VlbiAyIHJvd3MuCiAqIFBsYW5lIDEgLSBWVSA6IHBpeGVsIHN0cmlkZSBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiAyIGNocm9tYSBwYWlycywgcm93IHN0cmlkZSB0aGUgZGlzdGFuY2UgYmV0d2VlbiAyIHJvd3MuCiAqLwoKLy8gcmVhZCB0aGUgZ2l2ZW4gbnVtYmVyIG9mIGJ5dGVzIGZyb20gdGhlIHN0cmVhbSwgdGhlIGJ5dGVzIHdoaWNoIGFyZSBub3QgcmVhZCBhcmUga2VwdCBhcyB6ZXJvCmludCBSZWFkRGF0YShTdHJlYW0gc3RyZWFtLCBieXRlW10gYnVmZmVyLCBpbnQgY291bnQpCnsKICAgIHZhciBvZmZzZXQgPSAwOwogICAgd2hpbGUgKG9mZnNldCA8IGNvdW50KQogICAgewogICAgICAgIHZhciByZWFkID0gc3RyZWFtLlJlYWQoYnVmZmVyLCBvZmZzZXQsIGNvdW50IC0gb2Zmc2V0KTsKICAgICAgICBpZiAocmVhZCA8PSAwKQogICAgICAgICAgICBicmVhazsKICAgICAgICBvZmZzZXQgKz0gcmVhZDsKICAgIH0KICAgIHJldHVybiBvZmZzZXQ7Cn0KCi8vIGdldCBzdGF0ZQp2YXIgd2lkdGggPSBDb250ZXh0Lk91dHB1dFdpZHRoOwp2YXIgaGVpZ2h0ID0gQ29udGV4dC5PdXRwdXRIZWlnaHQ7CnZhciByb3dCeXRlcyA9IENvbnRleHQuT3V0cHV0Um93Qnl0ZXM7CnZhciB5UGl4ZWxTdHJpZGUgPSBDb250ZXh0LlBsYW5lT3B0aW9uc1swXS5QaXhlbFN0cmlkZTsKdmFyIHlSb3dTdHJpZGUgPSBDb250ZXh0LlBsYW5lT3B0aW9uc1swXS5Sb3dTdHJpZGU7CnZhciB1dlBpeGVsU3RyaWRlID0gQ29udGV4dC5QbGFuZU9wdGlvbnNbMV0uUGl4ZWxTdHJpZGU7CnZhciB1dlJvd1N0cmlkZSA9IENvbnRleHQuUGxhbmVPcHRpb25zWzFdLlJvd1N0cmlkZTsKdmFyIGNocm9tYVdpZHRoID0gKHdpZHRoICsgMSkgPj4gMTsKdmFyIGNocm9tYUhlaWdodCA9IChoZWlnaHQgKyAxKSA\u002BPiAxOwoKLy8gY2hlY2sgcGFyYW1ldGVycwppZiAod2lkdGggPD0gMCB8fCBoZWlnaHQgPD0gMCkKICAgIHRocm93IG5ldyBBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBzaXplIG9mIGltYWdlLiIpOwppZiAoeVBpeGVsU3RyaWRlIDw9IDAgfHwgeVJvd1N0cmlkZSA8IHdpZHRoICogeVBpeGVsU3RyaWRlKQogICAgdGhyb3cgbmV3IEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIHBpeGVsL3JvdyBzdHJpZGUgb2YgWSBwbGFuZS4iKTsKaWYgKHV2UGl4ZWxTdHJpZGUgPCAyIHx8IHV2Um93U3RyaWRlIDwgY2hyb21hV2lkdGggKiB1dlBpeGVsU3RyaWRlKQogICAgdGhyb3cgbmV3IEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIHBpeGVsL3JvdyBzdHJpZGUgb2YgVVYgcGxhbmUuIik7CgovLyByZWFkIFkgYW5kIFVWIHBsYW5lcywgYSBwbGFuZSB3aGljaCBpcyBub3QgY29tcGxldGUgbWVhbnMgdGhhdCB0aGUgc3RyaWRlcyBkb24ndCBtYXRjaCB0aGUgZGF0YQp2YXIgaW5wdXRTdHJlYW0gPSBDb250ZXh0LklucHV0U3RyZWFtOwp2YXIgeVNpemUgPSB5Um93U3RyaWRlICogaGVpZ2h0Owp2YXIgeVBsYW5lID0gbmV3IGJ5dGVbeVNpemVdOwp2YXIgeVJlYWRDb3VudCA9IFJlYWREYXRhKGlucHV0U3RyZWFtLCB5UGxhbmUsIHlTaXplKTsKaWYgKHlSZWFkQ291bnQgPCB5U2l6ZSkKICAgIHRocm93IG5ldyBBcmd1bWVudEV4Y2VwdGlvbigkIk5vdCBlbm91Z2ggZGF0YSBvZiBZIHBsYW5lLCB7eVJlYWRDb3VudH0gYnl0ZXMgcmVhZCBidXQge3lTaXplfSBieXRlcyBuZWVkZWQuIik7CnZhciB1dlNpemUgPSB1dlJvd1N0cmlkZSAqIGNocm9tYUhlaWdodDsKdmFyIHV2UGxhbmUgPSBuZXcgYnl0ZVt1dlNpemVdOwp2YXIgdXZSZWFkQ291bnQgPSBSZWFkRGF0YShpbnB1dFN0cmVhbSwgdXZQbGFuZSwgdXZTaXplKTsKaWYgKHV2UmVhZENvdW50IDwgdXZTaXplKQogICAgdGhyb3cgbmV3IEFyZ3VtZW50RXhjZXB0aW9uKCQiTm90IGVub3VnaCBkYXRhIG9mIFVWIHBsYW5lLCB7dXZSZWFkQ291bnR9IGJ5dGVzIHJlYWQgYnV0IHt1dlNpemV9IGJ5dGVzIG5lZWRlZC4iKTsKCi8vIGNvbnZlcnQgdG8gQkdSQSByb3cgYnkgcm93LCBJVFUtUiBCVC43MDkgZnVsbCByYW5nZSB3aXRoIDgtYml0IGZpeGVkLXBvaW50IGZhY3RvcnMKdmFyIG91dHB1dFN0cmVhbSA9IENvbnRleHQuT3V0cHV0U3RyZWFtOwp2YXIgcm93ID0gbmV3IGJ5dGVbcm93Qnl0ZXNdOwpmb3IgKHZhciB5ID0gMDsgeSA8IGhlaWdodDsgKyt5KQp7CiAgICB2YXIgeVJvd09mZnNldCA9IHkgKiB5Um93U3RyaWRlOwogICAgdmFyIHV2Um93T2Zmc2V0ID0gKHkgPj4gMSkgKiB1dlJvd1N0cmlkZTsKICAgIHZhciBwb3NpdGlvbiA9IDA7CiAgICB2YXIgckNvZWZmID0gMDsKICAgIHZhciBnQ29lZmYgPSAwOwogICAgdmFyIGJDb2VmZiA9IDA7CiAgICBmb3IgKHZhciB4ID0gMDsgeCA8IHdpZHRoOyArK3gsIHBvc2l0aW9uICs9IDQpCiAgICB7CiAgICAgICAgLy8gdXBkYXRlIGNocm9tYSBjb2VmZmljaWVudHMgZm9yIGVhY2ggMngyIGJsb2NrIG9mIHBpeGVscwogICAgICAgIGlmICgoeCAmIDEpID09IDApCiAgICAgICAgewogICAgICAgICAgICB2YXIgdXZJbmRleCA9IHV2Um93T2Zmc2V0ICsgKHggPj4gMSkgKiB1dlBpeGVsU3RyaWRlOwogICAgICAgICAgICB2YXIgdiA9IHV2UGxhbmVbdXZJbmRleF0gLSAxMjg7CiAgICAgICAgICAgIHZhciB1ID0gdXZQbGFuZVt1dkluZGV4ICsgMV0gLSAxMjg7CiAgICAgICAgICAgIHJDb2VmZiA9IDQwMyAqIHY7CiAgICAgICAgICAgIGdDb2VmZiA9IC00NyAqIHUgLSAxMTkgKiB2OwogICAgICAgICAgICBiQ29lZmYgPSA0NzUgKiB1OwogICAgICAgIH0KCiAgICAgICAgLy8gY29udmVydCB0aGUgcGl4ZWwgYW5kIHB1dCBpdCBpbnRvIHRoZSByb3cgYnVmZmVyCiAgICAgICAgdmFyIGx1bWEgPSB5UGxhbmVbeVJvd09mZnNldCArIHggKiB5UGl4ZWxTdHJpZGVdIDw8IDg7CiAgICAgICAgdmFyIGIgPSAobHVtYSArIGJDb2VmZikgPj4gODsKICAgICAgICB2YXIgZyA9IChsdW1hICsgZ0NvZWZmKSA\u002BPiA4OwogICAgICAgIHZhciByID0gKGx1bWEgKyByQ29lZmYpID4\u002BIDg7CiAgICAgICAgcm93W3Bvc2l0aW9uXSA9IGIgPCAwID8gKGJ5dGUpMCA6IChiID4gMjU1ID8gKGJ5dGUpMjU1IDogKGJ5dGUpYik7CiAgICAgICAgcm93W3Bvc2l0aW9uICsgMV0gPSBnIDwgMCA/IChieXRlKTAgOiAoZyA\u002BIDI1NSA/IChieXRlKTI1NSA6IChieXRlKWcpOwogICAgICAgIHJvd1twb3NpdGlvbiArIDJdID0gciA8IDAgPyAoYnl0ZSkwIDogKHIgPiAyNTUgPyAoYnl0ZSkyNTUgOiAoYnl0ZSlyKTsKICAgICAgICByb3dbcG9zaXRpb24gKyAzXSA9IDI1NTsKICAgIH0KCiAgICAvLyB3cml0ZSB0aGUgcm93IHRvIHRoZSBvdXRwdXQsIHRoZSBieXRlcyBvZiBwYWRkaW5nIGFyZSBrZXB0IGFzIHplcm8KICAgIG91dHB1dFN0cmVhbS5Xcml0ZShyb3csIDAsIHJvd0J5dGVzKTsKfQoKLy8gY29tcGxldGUKcmV0dXJuIEltYWdlUmVuZGVyaW5nUmVzdWx0LkRlZmF1bHQ7"
  }
}