{
  "draw2d": [
    {
      "type": "shape_designer.figure.ExtPolygon",
      "id": "6e834d54-6700-ad9b-ab50-0faefeaea483",
      "x": 7983.7771637666365,
      "y": 7980,
      "width": 25,
      "height": 40,
      "alpha": 1,
      "selectable": true,
      "draggable": true,
      "angle": 0,
      "userData": {
        "baseClass": "draw2d.SetFigure",
        "code": "/**\n * Generated Code for the Draw2D touch HTML5 lib.\n * File will be generated if you save the *.shape file.\n *\n * by 'Draw2D Shape Designer'\n *\n * Custom JS code to tweak the standard behaviour of the generated\n * shape. add your custom code and event handler here.\n *\n * Looks disconcerting - extending my own class. But this is a good method to\n * merge basic code and override them with custom methods.\n */\ntestShape = testShape.extend({\n\n    init: function(attr, setter, getter){\n         this._super(attr, setter, getter);\n\n        this.attr({resizeable:false});\n        this.installEditPolicy(new draw2d.policy.figure.AntSelectionFeedbackPolicy());\n    },\n\n    /**\n     *  Called by the simulator for every calculation\n     *  loop\n     *  @param {Object} context context where objects can store or handover global variables to other objects.\n     *  @required\n     **/\n    calculate:function( context)\n    {\n        var i1 = this.getInputPort(0);\n        var i2 = this.getInputPort(1);\n        var o1 = this.getOutputPort(0);\n        \n        o1.setValue(!(i1.getValue() && i2.getValue()));\n    },\n\n\n    /**\n     *  Called if the simulation mode is starting\n     *  @required\n     **/\n    onStart:function(context)\n    {\n    },\n\n    /**\n     *  Called if the simulation mode is stopping\n     *  @required\n     **/\n    onStop:function(context)\n    {\n    },\n\n    /**\n     * Get the simulator a hint which kind of hardware the shapes requires or supports\n     * This helps the simulator to bring up some dialogs and messages if any new hardware is connected/get lost\n     * and your are running a circuit which needs this kind of hardware...\n     **/\n    getRequiredHardware: function(){\n      return {\n        raspi: false,\n        arduino: false\n      }\n    }\n\n});",
        "markdown": "# NAND Gate\n\nIn digital electronics, a **NAND** gate (NOT-AND) is a logic gate which produces \nan output which is false only if all its inputs are true; thus its output is \ncomplement to that of an AND gate. A LOW (0) output results only if all the \ninputs to the gate are HIGH (1); if any input is LOW (0), a HIGH (1) output \nresults. \n\nA NAND gate is made using transistors and junction diodes. By \nDe Morgan's theorem, a two-input NAND gate's logic may be expressed as AB=A+B, \nmaking a NAND gate equivalent to inverters followed by an OR gate.\n\n**The NAND gate is significant because `any` boolean function can be implemented \nby using a combination of NAND gates. This property is called functional \ncompleteness. It shares this property with the NOR gate.**\n\n## Logic table\n\n| INPUT A   | INPUT B  |  OUTPUT    |\n|:---------:|:--------:|:----------:|\n| Low       | Low      |  `High`    |\n| `High`    | Low      |  `High`    |\n| Low       | `High`   |  `High`    |\n| `High`    | `High`   |  Low       |\n\n",
        "name": "shape"
      },
      "cssClass": "shape_designer_figure_PolyCircle",
      "ports": [],
      "bgColor": "rgba(252,252,252,1)",
      "color": "rgba(27,27,27,1)",
      "stroke": 1,
      "radius": 0,
      "dasharray": null,
      "vertices": [
        {
          "x": 7983.7771637666365,
          "y": 8019.992866146254
        },
        {
          "x": 7983.878675304271,
          "y": 8020
        },
        {
          "x": 7988.202252452422,
          "y": 8019.696155060245
        },
        {
          "x": 7992.394459896762,
          "y": 8018.793852415718
        },
        {
          "x": 7996.3279195354535,
          "y": 8017.320508075689
        },
        {
          "x": 7999.883115187803,
          "y": 8015.320888862379
        },
        {
          "x": 8002.952024032928,
          "y": 8012.855752193731
        },
        {
          "x": 8005.441398828513,
          "y": 8010
        },
        {
          "x": 8007.275601181079,
          "y": 8006.840402866514
        },
        {
          "x": 8008.3988997802935,
          "y": 8003.472963553339
        },
        {
          "x": 8008.7771637666365,
          "y": 8000
        },
        {
          "x": 8008.3988997802935,
          "y": 7996.527036446661
        },
        {
          "x": 8007.275601181079,
          "y": 7993.159597133486
        },
        {
          "x": 8005.441398828513,
          "y": 7990
        },
        {
          "x": 8002.952024032928,
          "y": 7987.144247806269
        },
        {
          "x": 7999.883115187803,
          "y": 7984.679111137621
        },
        {
          "x": 7996.3279195354535,
          "y": 7982.679491924311
        },
        {
          "x": 7992.394459896762,
          "y": 7981.206147584282
        },
        {
          "x": 7988.202252452422,
          "y": 7980.303844939755
        },
        {
          "x": 7983.878675304271,
          "y": 7980
        },
        {
          "x": 7983.7771637666365,
          "y": 7980.007133853746
        },
        {
          "x": 7983.7771637666365,
          "y": 8019.992866146254
        }
      ],
      "blur": 0,
      "filters": [
        {
          "name": "shape_designer.filter.PositionFilter"
        },
        {
          "name": "shape_designer.filter.SizeFilter"
        },
        {
          "name": "shape_designer.filter.FillColorFilter"
        },
        {
          "name": "shape_designer.filter.StrokeFilter"
        }
      ]
    },
    {
      "type": "shape_designer.figure.ExtPort",
      "id": "19fd1dcb-f9e4-190d-a717-7444122d9964",
      "x": 8006.7228362333635,
      "y": 7995,
      "width": 10,
      "height": 10,
      "alpha": 1,
      "selectable": true,
      "draggable": true,
      "angle": 0,
      "userData": {
        "name": "output",
        "type": "Output",
        "direction": 1,
        "fanout": 20
      },
      "cssClass": "shape_designer_figure_ExtPort",
      "ports": [],
      "bgColor": "rgba(55,177,222,1)",
      "color": "rgba(27,27,27,1)",
      "stroke": 1,
      "dasharray": null,
      "filters": [
        {
          "name": "shape_designer.filter.PositionFilter"
        },
        {
          "name": "shape_designer.filter.FanoutFilter"
        },
        {
          "name": "shape_designer.filter.PortDirectionFilter"
        },
        {
          "name": "shape_designer.filter.PortTypeFilter"
        }
      ]
    },
    {
      "type": "shape_designer.figure.ExtPort",
      "id": "7297563e-896e-648c-d774-7e1a662d65a4",
      "x": 7978.673963766636,
      "y": 7983.5,
      "width": 10,
      "height": 10,
      "alpha": 1,
      "selectable": true,
      "draggable": true,
      "angle": 0,
      "userData": {
        "name": "input0",
        "type": "Input",
        "direction": 3,
        "fanout": 20
      },
      "cssClass": "shape_designer_figure_ExtPort",
      "ports": [],
      "bgColor": "rgba(55,177,222,1)",
      "color": "rgba(27,27,27,1)",
      "stroke": 1,
      "dasharray": null,
      "filters": [
        {
          "name": "shape_designer.filter.PositionFilter"
        },
        {
          "name": "shape_designer.filter.FanoutFilter"
        },
        {
          "name": "shape_designer.filter.PortDirectionFilter"
        },
        {
          "name": "shape_designer.filter.PortTypeFilter"
        }
      ]
    },
    {
      "type": "shape_designer.figure.ExtPort",
      "id": "31c229c7-f64e-5b82-2349-767cb9cd57be",
      "x": 7978.673963766636,
      "y": 8007,
      "width": 10,
      "height": 10,
      "alpha": 1,
      "selectable": true,
      "draggable": true,
      "angle": 0,
      "userData": {
        "name": "input1",
        "type": "Input",
        "direction": 3,
        "fanout": 20
      },
      "cssClass": "shape_designer_figure_ExtPort",
      "ports": [],
      "bgColor": "rgba(55,177,222,1)",
      "color": "rgba(27,27,27,1)",
      "stroke": 1,
      "dasharray": null,
      "filters": [
        {
          "name": "shape_designer.filter.PositionFilter"
        },
        {
          "name": "shape_designer.filter.FanoutFilter"
        },
        {
          "name": "shape_designer.filter.PortDirectionFilter"
        },
        {
          "name": "shape_designer.filter.PortTypeFilter"
        }
      ]
    },
    {
      "type": "shape_designer.figure.PolyCircle",
      "id": "8d9954ab-b5d2-b3c8-89a6-79f7ea30cfae",
      "x": 8006.7228362333635,
      "y": 7995,
      "width": 10,
      "height": 10,
      "alpha": 1,
      "selectable": true,
      "draggable": true,
      "angle": 0,
      "userData": {
        "name": "Circle"
      },
      "cssClass": "shape_designer_figure_PolyCircle",
      "ports": [],
      "bgColor": "rgba(0,0,0,1)",
      "color": "rgba(27,27,27,1)",
      "stroke": 0,
      "radius": 0,
      "dasharray": null,
      "blur": 0,
      "filters": [
        {
          "name": "shape_designer.filter.PositionFilter"
        },
        {
          "name": "shape_designer.filter.SizeFilter"
        },
        {
          "name": "shape_designer.filter.FillColorFilter"
        }
      ]
    }
  ],
  "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA8CAYAAAApK5mGAAAFfklEQVRoQ+1aXUhbZxh+z4k/VIfRGigmob2y9KIVerGtHV6Vjf2IRdALdyHYi3VFO7wQ9GYTim7+tAMZ6jZLWaRhGya21clmOijVsNYtCjKlxjRR87uYHKPxnJN4kpNzxie6dbJ4kmMSf0hu870/z/u83/t93/seDI7ZDztmeCAN6LAzmmYozVCKI5BOuRQHPG5zMTEkk8nkWVlZ7/I8n4njuA8A1jAMy8JxfNJms63FbTWJAjEBOnfunLqkpORqYWGhhCRJdm1tjfN4PLjf78czMjJeBgKBp6FQyI9h2D2n0+lIor+CqmMCdP78+bvNzc3VZWVlr+Xl5f2jdHV1FV68eAEzMzPckydPgouLiyGGYUZDodAAy7LPXS5XQNCDBC/YF6DdvlitVtDpdBGNRsMQBLEcDAa/5DhuaHFx0Z9gv6OqSyigV63odDro7e0N2O12QzAYbN/c3JxwOBzBZANLGqAdx7VaLQLG2O32gXA43JrsPSYI6NSpU2/m5uZ2lZWVXWpsbMxSKpVxB9lsNkN3dzdlMBie0zR902g0muJWEqPAnoCUSuVNlmU/ZhimuKCgIPvMmTNw584duHDhAuA4HqOJf5f19fVtDg4OuhwOx20A+HF5eXk9biUCAlEBKZXKYp7nB7xe7xuhUEiC9BQXF0NVVRXU1dVBUVGRKF86OzthdHT0r/X19er5+flnAMCKUhRFaE+GioqKJgiCKA2Hw1vrcnNzob+/H8rLyyEnJ0e0H/fv3+fUavW8x+P5cHZ2dla0ov8R3JMhjuMGCIJIKEM7PnR3dwcfPHgwRRDEdZPJZEwUKKE99AnLstcZhjlbUFCQdfr06a09VFJSImoP7Xa6rq6OnpiYaCNJ8q7T6VxNBCjBKqdQKC5lZ2d37qfKRXN0amoK2traPGaz+QOj0TidEkDISLSrTyIcaG9vp4eHh79zu90dDofDuV+dggwlG9D09DS0tLRQS0tLV0wmk+HIA0IAGhoaKL1e30RR1Pf7vfcdOEMI0NDQEKhUqhG9Xj9GUdRbAPA2AHAA8AsAfAMAfwJAKBb2DgWgubk5uHHjRtBgMGRHIpHdVxAE7DMA+BYABCvhoQCkUqng1q1bYLfbo5FAAcAVABDcY4cCUGlpKUxOTgplVBsAfAUA3r0WHjighYUFqK6uhhhuQL8CQD0AvEwD2h2BZB6syNaxSjkEKIaiQG8XhT+ENtqB7yHkoEDZ5gHg0yNVtrcP1p/0er2OoqjLAPDO9sH6MwB8feQO1mN19Tl2l9OOjg760aNHKrfb3X7knw/ogdfa2uq1WCzvp+SBhzo/HMc1YRhWlZ+fn19TUwO1tbUgk8mEqmdM/9fX19Pj4+OfkyTZn4onOK5QKDQ0TV/e2NiQSSSSTNSXa2pqgsrKSpBKpTE5HW0RapI8fPhw2uv1fpSSJolcLi9lWbbT5/O9zrJsJnLsxIkTUFFRgfoAgMCJ/anVatTGMq6srFSnrI2VLEBdXV0wMjLiRo1Go9H4WyobjbhcLteilCNJsjARKdfX18doNBqX0+m8zXHcDyltBaN0UigUZzEMa+Z5vlIqlUpRUbh27VrcRcFisew0638nSbJ+Ab0ZkvRL+l0OXWt6enoYq9U6EIlEDn6cIraN9fjx462Bl81mmw4EAl8wDDN+5AZeNpsNxsbGOK1Wu0kQhDUQCKCRpHa/ral4snNfKefz+f4zNLZYLOFXhsbPDu3QGI31L168ePXkyZMZGxsbYTTWX1lZkfj9fiwzM9NM0/RTlmX9HMfdc7lcUVs38URa7NqYGNr+8OI9DMPQAevjeR59eJEtkUieHckPL8RG6yDkYmLoIBwTazMNSGzkUiWXZihVkRZrJ82Q2MilSu7YMfQ3FpU2akOjJwAAAAAASUVORK5CYII="
}